전체 글 (123) 썸네일형 리스트형 Factory Method - 하위 클래스에서 인스턴스 작성하기 Template Method 패턴에서는 상위 클래스에서 처리의 골격을 만들고, 하위 클래스에서 구체적인 처리와 내용을 만들었다. 이 패턴을 인스턴스 생성의 장면에 적용한 것이 Factory Method 패턴 factory '공장' 인스턴스를 생성하는 공장을 Template Method 패턴으로 구성한 것이 Factory Method 패턴. Adapter - 바꿔서 재이용하기 이미 제공되어 있는 것을 그래도 사용할 수 없을 때, 필요한 형태로 교환하고 사용하기.'이미 제공되어 있는 것'과 '필요한 것' 사이의 '차이'를 없애주는 디자인 패턴. Adapter 패턴 (Wrapper 패턴)클래스에 의한 Adapter 패턴 (상속을 사용한 Adapter 패턴)인스턴스에 의한 Adapter 패턴 (위임을 사용한 Adapter 패턴) Iterator - 순서대로 지정해서 처리하기 Iterator 패턴 : 무엇인가 많이 모여있는 것들을 순서대로 지정하면서 전체를 점색하는 처리를 실행하기 위한 것. iterator는 무엇인가 '반복한다'는 의미이며, 반복자라고도 함. 예제 프로그램 Builder - 복잡한 인스턴스 조립하기 Problem 제시 식당을 운영하는 A씨는 매일 식단을 바꾸고 이를 출력하는 프로그램을 만들었다. 최근 웹페이지를 통해 식단을 확인하려는 사람들이 많아져서 식단을 텍스트 포맷으로 뿐만 아니라 HTML 포맷으로도 만들기로 하고 현재 프로그램을 확장하려고 한다. 현재 Model 식단의 구조는 제목(title), 소제목(string), 식단아이템(item)으로 구성 TodayMenu는 이를 private 메소드로 나눠서 구현함 package Builder; public class TodayMenu { private StringBuilder buffer = new StringBuilder(); public String construct() { makeTitle("11월 27일 식단"); makeString("아.. Template Method - 하위 클래스에서 구체적으로 처리하기 Problem 자판기 사업을 새로 시작한 A씨는 커피와 레몬차를 판매하기로 결정하고 이를 제어할 자판기 제어 프로그램을 개발하도록 시스템 개발자에게 요구했고 아래와 같이 시스템이 개발되었다. Coffee & Tea 조리 메뉴얼 Coffee 조리법 물을 끓인다. 끊인 물에 커피를 넣는다. 컵에 커피를 붓는다. 설탕 및 우유를 추가한다. Tea 조리법 물을 끓인다. 끓인 물에 Tea를 우려낸다. 컵에 Tea를 붓는다. 레몬을 추가한다.package templateMethod; public class Client { public static void main(String[] args) { Client client = new Client(); Coffee coffee = client.pressCoffeeButt.. Abstract Factory - 관련 부품을 조합해서 제품만들기 Problem 제시 다양한 고객을 대상으로 영업하는 A씨는 자신 만의 고객관리가 필요함을 느꼈다. 초기 디자인에는 A씨 고객이 주로 국내인으로 되어 있어서 아래와 같은 형태로 개발되었으나 영업을 하면서 외국에 거주하는 고객이 점차 늘어나게 되었고, A씨는 주소와 전화번호가 거주하는 국가에 맞게 생성되기를 원한다. package abstractFactory; public class Client { public static void main(String[] args) { System.out.println("국내 거주 주소 및 전화번호를 가져온다."); Client client = new Client(); KRAddress krAddress = client.createAddress("KR"); krAddres.. Singleton - 인스턴스를 한 개만 만들기 Problem 제시 프린터 스풀은 시스템에오직 하나만 존재하여야 한다. 프린터 스풀 클래스를 제공하는 프로그래머 A씨는 반드시 하나만 생성하도록 검사하고 있다. 또한 편리한 접근을 위해 전역변수(static)로 인스터스를 접근하도록 하였다. 이 사실을 제대로 전달받지 못한 개발자들이 프린터 스풀 객체를 임의로 생성하려다 에러를 만나곤 해서 원성이 크다. 어떻게 해결할 것인가? package Singleton; public class PrintSpool { public static int numOfinstance = 0; public static PrintSpool SPOOL; public PrintSpool(){ numOfinstance++; if(numOfinstance > 1){ throw new R.. 02. 객체지향 설계 원칙 객체와 관계를 이용한 실세계 매핑 관계 유형 Aggregation / Composition Inheritance / Realization Dependency 상황(Context)에 따라 관계 유형이 달라짐 LSP (Liskov Substution Principle) (WIKIPEDIA : Liskov substitution principle) -. 기존 타입의 하위 타입을 만드는 가이드 -. Substitutabllity (대체 가능성) "if S is a subtype of T, then objects of type T may be replaced with objects of type S (i.e., objects of type S may be substituted for objects of type .. 이전 1 2 3 4 ··· 16 다음