본문 바로가기

IT/Design Pattern

(5)
[디자인패턴] 싱글톤(Singleton) 패턴 [Design Pattern] 싱글톤(Singleton) 패턴 프로그램 내에서 1개의 인스턴스만 생성 하기 위해서 필요한 것이 Singleton 패턴 입니다. 프로그램의 전역에서 사용될 설정 정보 값은 Singleton 패턴을 이용해 한개만 생성해 정보를 공유 하는데도 필요합니다. 사용자가 주의해서 1개만 생성하는것이 아닌 프로그램적으로 보증하는 방법을 제공해 줍니다. 싱글톤 패턴 싱글톤 패턴을 이용해 클래스를 만들어 보고 인스턴스가 1개 이상 생성되는지 확인해 보자. [Singleton 구현] 싱글톤 클래스의 생성자는 private로 되어 있다. 이것은 싱글톤 클래스 외부에서 생성자를 호출을 금지하기 위해서다. 해당 패턴을 이용하면 프로그래머가 실수를 해도 인스턴스가 1개만 생성되도록 보증을 해주고 있..
[디자인패턴] Factory Method 패턴 [Design Pattern] Factory Method 패턴 팩토리 패턴을 이해하기 위해서는 우선 템플릿 패턴을 알아야한다. 왜냐하면 템플릿 패턴에 인스턴스 생성하는 부분까지 추상화 시켰기 때문이다. 팩토리 패턴은 처리 골격을 만들고 상속 받은 클래스가 구체적인 처리를 구현해 놓습니다. 또한 인스턴스를 생성하는 부분까지 맡겼기 때문에 해당 클래스를 호출하는 부분에서는 따로 인스턴스를 만드는 과정을 없앴습니다. 팩토리 메소드 패턴 다목적 공장이 있습니다. 이 공장을 가지고 있으면 철강, 차, 베터리 등등 모든 것을 만들 수 있다. 이 공장을 이용해 차를 만드는 과정을 프로그램화 해보겠다. 다목적 공장에 해당하는 Framework 패키지 안에 Factory와 Product가 있다. 이 공장들을 이용해 차를..
[디자인패턴] Template Method 패턴 [Design Pattern] Template Method 패턴 가정에서 요리할 때 필요한 모양틀이 있다. 별모양으로 된 이 틀은 밀가루 반죽을 넣으면 별 모양으로 된 쿠키가 된다. 또한 계란물을 넣으면 별모양 후라이가 되기도 한다. 프로그램을 할 때도 제공된 틀 클래스를 상속 받으면 상속 받은 클래스는 어떠한 것을 구현해도 호출 하는 쪽에서는 수정에 대한 영향도가 없이 다양한 결과를 만들어 낼 수 있다. 이것을 Template Method 패턴이라고 한다. 템플릿 메소드 패턴 가정에서 요리할 때 필요한 틀을 직접 프로그램 해보겠다. 아래 클래스 다이어그램을 보면 AbstractCookShape고정된 요리틀 추상 클래스가 있다. 이것을 상속 받은 CookieShape, EggShape은 틀의 모양을 갖은..
[디자인패턴] Adapter 패턴 [Design Pattern] Adapter 패턴 한국에서 쓰는 가전 기기를 110V를 쓰는 나라에 가져가면 쓸 수가 없다. 왜냐면 우리나라는 220V로 규격화 되어 있기 때문이다. 110V를 쓰는 나라에서 우리나라 가전기기를 사용하려면 뭐가 필요 할까? 바로 아답터다. 220V 가전기기를 110V에서 사용하기 위해 꼭 필요하다. 프로그램에서도 마찮가지 이다. 이미 구현 되어 있는 Util Class가 존재 한다. 내가 만든 프로그램에서 해당 클래스를 사용하는데 알맞는 인터페이스가 존재 하지 않을 때가 있다. 이때 아덥터 패턴을 사용해 이미 구현된 Class를 사용해 보자. 상속을 사용한 Adapter 패턴 나는 내비게이션을 가지고 있다. 이것을 새 차에 장착하고 싶은데 붙일 방법이 없다. 그래서 거치대..
[디자인패턴] Iterator Iterator 어떠한 종류의 데이터 집합이 있다. 이 데이터를 조작, 검색 등을 하는 기능이 포함 되어있다. 이 중 검색 기능과 다른 기능이 뒤섞여 개발하면 클래스간의 결합도가 증가되어 코드가 보기가 어려워진다. Iterator 패턴을 이용해 검색 기능을 재사용 가능 하게 만들어 보자. 검색 기능을 재사용 하는 Iterator Dvd 대여점이 있다. 이 대여점에 신작 Dvd가 추가되고 모든 Dvd를 데이터를 출력하는 것을 만들어 보겠다. 이름 해설 Aggregate 집합체를 나타내는 인터페이스 Iterator 검색 실행하는 인터페이스 Dvd Dvd를 나타내는 클래스 DvdStore Dvd 대여점을 나타내는 클래스 DvdStoreIterator Dvd 대여점을 검색하는 클래스 Main 프로그램 시작 클래..