본문 바로가기

스터디64

[이펙티브 자바] 03. 클래스와 인터페이스 [이펙티브 자바] 03. 클래스와 인터페이스 아이템 15. 클래스와 멤버의 접근 권한을 최소화하라 어설프게 설계된 컴포넌트와 잘 설계된 컴포넌트의 가장 큰 차이는 바로 클래스 내부 데이터와 내부 구현 정보를 외부 컴포넌트로부터 얼마나 잘 숨겼느냐다. 정보 은닉, 혹은 캡슐화라고 하는 이 개념은 소프트웨어 설계의 근간이 되는 원리다. 15.1 캡슐화의 장점 캡슐화의 장점은 정말 많은데, 그중 대부분은 시스템을 구성하는 컴포넌트들을 서로 독립시켜서 개발, 테스트, 최저과, 적용, 분석, 수정을 개별적으로 할 수 있게 해주는 것과 연관되어 있다. 시스템 개발 속도를 높인다. 여러 컴포넌트를 병렬로 개발할 수 있기 때문이다. 시스템 관리 비용을 낮춘다. 각 컴포넌트를 더 빨리 파악하여 디버깅할 수 있고, 다른 .. 2022. 8. 20.
[이펙티브 자바] 02. 모든 객체의 공통 메서드 https://be-developer.tistory.com/87 [이펙티브 자바] 01. 객체 생성과 파괴 [이펙티브 자바] 01. 객체 생성과 파괴 객체의 생성과 파괴를 다룬다. 객체를 만들어야 할 때와 만들지 말아야 할 때를 구분하는 법, 올바를 객체 생성 방법과 불필요한 생성을 피하는 방법, be-developer.tistory.com [이펙티브 자바] 02. 모든 객체의 공통 메서드 Object는 객체를 만들 수 있는 구체 클래스지만 기본적으로는 상속해서 사용하도록 설계되었다. Object에서 final이 아닌 메서드(equals, hashCode, toString, clone, finalize)는 모두 재정의를 염두해 두고 설계된 것이라 재정의 시 지켜야 하는 일반 규약이 명확히 정의되어 있다... 2022. 8. 10.
[헤드퍼스트 디자인패턴] 09. 상태 패턴(State Pattern) [헤드퍼스트 디자인패턴] 09. 상태 패턴(State Pattern) 1. 상태 패턴이란? 객체의 내부 상태가 바뀜에 따라서 객체의 행동을 바꿀 수 있다. 마치 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있다. 2. 상태 기계 기초 지식 알아보기 뽑기 기계를 만들때, 상태를 이용해 기계를 구현하는 방법을 간단하게 살펴보자. 2.1 우선 상태들을 모아본다. 총 4개의 상태가 존재한다. (No Quarter : 동전 없음, Has Quarter : 동전 있음, Gumball Sold : 알맹이 판매, Out of Gumballs : 알맹이 매진) 2.2 현재 상태를 저장하는 인스턴스 변수를 만들고 각 상태의 값을 정의한다. final static int SOLD_OUT = 0; final static.. 2022. 8. 7.
[이펙티브 자바] 01. 객체 생성과 파괴 [이펙티브 자바] 01. 객체 생성과 파괴 객체의 생성과 파괴를 다룬다. 객체를 만들어야 할 때와 만들지 말아야 할 때를 구분하는 법, 올바를 객체 생성 방법과 불필요한 생성을 피하는 방법, 제때 파괴됨을 보장하고 파괴 전에 수행해야 할 정리 작업을 관리하는 요령을 알아본다. 아이템1. 생성자 대신 정적 팩터리 메서드를 고려하라 클래스의 인스턴스를 얻는 전통적인 수단은 public 생성자이고, 이와 별도로 정적 팩터리 메서드(static factory method)를 제공할 수 있다. // 기본타입인 boolean을 받아 박싱 클래스인 Boolean 객체 참조로 변환하는 정적 메소드 public static Boolean valueOf(boolean b){ return b ? Boolean.TRUE : .. 2022. 8. 2.
[헤드퍼스트 디자인패턴] 08. 반복자 패턴 (Iterator Pattern) 과 컴포지트 패턴 (Composite Pattern) [헤드퍼스트 디자인패턴] 08. 반복자 패턴 (Iterator Pattern) 과 컴포지트 패턴 (Composite Pattern) 1. 반복자 패턴 (Iterator Pattern) 1.1 반복자 패턴이란? 컬렉션의 구현 방법을 노출하지 않으면서 집합체 내의 모든 항목에 접근하는 방법을 제공한다. 1.2 요구사항 팬케이크 하우스에서 파는 아침 메뉴와 객체 마을에서 파는 점심메뉴를 한곳에서 제공한다. 팬케이크 하우스에서는 메뉴를 List로 관리하고 객체 마을에서는 메뉴를 Array로 관리한다. 1.3 자격 요건 구현하기: 1차 시도 pancakeHouseMenu pancakeHouseMenu = new PancakeHouseMenu(); ArrayList breakfastItems = pancakeHou.. 2022. 7. 31.
[도메인주도설계] 2022.06.19 ~ 2022.07.24 네번째 스터디 회고록 [도메인주도설계] 2022.06.19 ~ 2022.07.24 네번째 스터디 회고록 도메인주도설계! 이름하여 DDD 네번째 스터디 회고록 이번 스터디는 조금 규모가 컸다 디자인 패턴 스터디 같이 하는 개발자분이 동생과 도메인주도설계 스터디를 하려는데 참가할 사람을 모집하여 첫 스터디 인원은 총 10명! 그러나 첫 스터디 후 두명이 탈주하여 최종적으로 8명으로 스터디를 마무리하게 되었다. 내가 DDD 라는 개념을 처음 접한건 인프런에서 김영한님의 JPA 강의를 들으면서인데, 사실 이때는 이게 도메인 주도 설계 방법인지 모르고 들었다. 그냥 "엔티티에 비즈니스 로직을 넣는것을 도메인 모델 패턴이라고 하고 서비스에 비즈니스 로직을 넣는것을 트랜잭션 스크립트 패턴이라고 한다. 복잡한 로직은 도메인 모델 패턴을 사.. 2022. 7. 25.
728x90
반응형