본문 바로가기

전체 글27

[책 오브젝트] CHAPTER 2 - 객체지향 프로그래밍 객체지항의 본질 어떤 Class가 필요한 지, 어떤 Method가 필요한지(X) 어떤 객체가 어떤 상태와 행동을 가지는지 설정 → 더 단순하고 깔끔한 설계 접근 제어의 필요성 Why? 외부 간섭 최소화 → 객체에게 자율성 부여 외부에서는 객체에게 간섭, 직접 개입 x 객체에게 요청, 객체가 결정해야함 인터페이스와 구현의 분리 (핵심 원칙) 구현 은닉 역할: 클래스 작성자, 클라이언트 프로그래머 내부 외부를 명확하게 경계지음 → 내부 구현 은닉, 의도치 않은 부분 접근 방지 프로그래머 입장에선 알아야할 부분 감소, 작성자 입장에선 구현 변경 폭 상승 Money class (custom) 내부적으로 하나의 인스턴스 변수(BigDecimal)만 포함 Long 타입으로 처리하지 않은 이유? → 개념을 명시적으로.. 2023. 6. 18.
[책 오브젝트] CHAPTER 1 - 객체, 설계 좋은 설계란? 소프트웨어 모듈의 목적 (로버트 마틴) 동작해야함 간단한 작업으로도 변경이 가능해야함 (저자가 강조하는 부분) 이해하기 쉬워야함 (두번째로 강조) 좋지 않은 설계(entry method 확인) public class Theater { private TicketSeller ticket Seller; public Theater(TicketSeller ticketSeller){ this.ticketSeller = ticketSeller; } public void enter(Audience audience){ if (audience.getBag().hasInvitation()){ Ticket ticket = ticketSeller.getTicketOffice().getTicket(); audien.. 2023. 6. 18.
[이펙티브 자바] 생성자 대신 정적 팩터리 메서드를 고려할 것 - item 1 장점 👍 이름을 가질 수 있음 ex) 값이 소수인 BigInteger을 반환하는 함수는? BigInteger(int, int, Random) //or BigInteger.probablePrime 이 것은 의미를 더 명확하게 전달할 수 있게 함(필자 의견) 👍 호출될 때마다 인스턴스를 새로 생성하지 않아도 됨 언제 어느 인스턴스를 살아 있게 할 지 철저히 통제할 수 있음 imutable class 같은 경우 미리 만들거나, 인스턴스 캐싱 재활용 함 ex) Boolean.valueOf(boolean) 플라이웨이트 패턴과 비슷함 싱글턴, 인스턴스화 불가, 동치인 인스턴스가 하나뿐임을 보장 등 통제 가능함 불필요한 객체 생성을 피할 수 있음 👍 반환 타입의 하위 타입 객체를 반환할 수 있는 능력이 있음 반환 객.. 2023. 6. 18.