본문 바로가기

Collection 을 설계하는 방법 Collection 을 설계하는 방법방법1. Object 기반 Container public void addFront(Object data) { head = new Node(data, head); } public Object front() { return head.data; } static class Node { Object data; Node next; Node(Object data, Node next) { this.data = data; this.next = next; } } 장점 : 모든 객체 타입을 하나의 컬렉션에 저장할 수 있다? -> 장점이 아니라 단점이다.단점 :1. 모든 객체 타입을 하나의 컬렉션에 저장할 수 있다.2. 타입 안정성이 떨어진다. 실수로 다른 타입을 넣어도 컴파일 시간에 에러.. 더보기
공통성과 가변성의 분리의 원칙을 사용하는 GoF의 디자인 패턴 5가지 공통성과 가변성의 분리의 원칙을 사용하는 GoF의 디자인 패턴 5가지1) 변하는 것을 메소드로 분리- Template Method : 알고리즘의 변경- Factory Method : 객체 생성2) 변하는 것을 클래스로 분리(교체 가능해야 하므로 인터페이스 기반)- Strategy : 정책- State : 상태에 따른 동작- Builder : 공정에 따른 표현 책 : 알기 쉬운 디자인 패턴(틀린 내용도 많지만 내용자체의 구현체를 생성 구조의 원리가 아닌 설계를 다룬 내용임, C++기준으로 되어 있음) - 사서 볼만큼 좋은 책은 아니다. 커맨드 패턴 - 단순히 Undo와 Redo 뿐만 아니라 매크로 커맨드도 어렵지 않게 만들 수 있다. 매크로 커맨드도 만들어 보자. 리팩토링 책 추천- Java 언어로 배우는.. 더보기
재귀적 합성을 사용한 설계 방법 재귀적 합성을 사용한 설계 방법. 재귀적 합성을 통한 복합 객체의 구성 - Composite 메뉴가 선택된 사실을 다시 외부로 알려야 함.“객체가 외부로 이벤트를 발생시킨다”라고 표현. 자바에서 이벤트를 처리하는 방법인터페이스 기반 리스너 방식(일종의 전략 패턴이다)문제점모든 객체가 결국 인터페이스 메소드를 호출하므로,어떤 객체에서 이벤트가 발생했는지 구분하는 코드를 작성해야 한다.“OCP를 만족 할 수 없다."onCommand()가 어떤 호출인지 확인하는 id같은 자료구조가 필요하다.=> 요즘에는 핸들러 방식의 이벤트 처리 방식(하지만 자바에서는 구현 불가) IMenuListener 관찰자 패턴 : Observer Pattern의도 : 등록된 모든 객체에게 이벤트를 발생 최신 자바의 이벤트 처리 방법 .. 더보기