본문 바로가기

Language/Design Pattern

[Design Pattern: 생성] 3. Abstract Factory 목적Factory Method의 확장 버전으로 Factory를 유연하게 만들어 더 높은 유연성을 보일 수 있다. 설명 & 예제이번 디자인 패턴을 설명하기에는코드보다는 아래 설명이 훨씬 효과적일 것이다. 생산공장 F; 유닛 H; F = new 배럭(); H = F.생성(MR); //마린생성 H.어택(); //총쏘기 F = new 스타포트(); H = F.생성(BC); //배틀크루저생성 H.어택(); //레이저 이처럼 생산공장(Factory)를 배럭 or 스타포트로생성할 수 있고, 그에 따라 다시 마린or메딕 & 배틀크루져or레이스를 뽑을 수 있다.그리고 조금 더 추가하자면 배럭인지 스타포트인지에 따라 유닛에 속성을 [날수 있음] 을 따로 부여해줄 수 있다. 더보기
[Design Pattern: 생성] 2. Factory Method 목적객체를 생성하는 Factory 클래스를 만들어 코드를 사용한 클래스(Main)에서는 new를 하지 않고 유연하게 사용하고자 하는 목적 JAVA API 예제 Boolean a = Boolean.valueOf(true); Boolean b = Boolean.valueOf(true); System.out.println(a==b); Boolean.valueOf()를 통해 new를 하지 않고 객체가 생성됬다. 그리고 내부적으로 동일한 매개변수가 들어왔을 떄 객체를 생성하지 않고 동일한 레퍼런스를 보내는 로직을 Factory에서 담당하고 있다. 예제 인터페이스 Unit을 상속으로 받은 Marin과 Mdedic을 만든다. Unit은 공통적으로 Attack()을 가지고 있다. public abstract class.. 더보기
[Design Pattern: 구조] 6. Adapter 목적개별적으로 작동하는 특정한 CLASS를 공동의 Interface 규격에 맞추도록 하는 목적즉, 특정한 Interface 규격에 맞도록 중간 연결 클래스를 하나 더 만들어, 개별적인 CLASS의 수정없이 공동 Interface 규격에 맞춤 구현방식 Client에서 요구하는 규격을 맞추기 위해 객체를 변경함기능객체를 상속하고 Client의 요구규격에 맞는 Interface를 implements함쉽게 말해 독립적인 CLASS A가 있다. 근데 다른 클래스와의 인터페이스를 위해 INTERFACE B를 만들고, 이 규격에 맞추기 위해 extends A implements B를 한 class C를 만든다. 기능은 A의 기능을 상속해서 사용하고, 규격만 B로 다시 재정의 하는 것이다. Class C에서 다시 정의.. 더보기
[Design Pattern: 생성] 1. Singleton 목적동일한 인스턴스를 여러 객체에서 사용하고 싶은 경우 사용함즉, 모든 객체에서 사용하는 Global 전역 변수 인스턴스 같은 개념 **여러 객체에서 사용하는 특징에 따라 synchronized 해야 스레드에 안전함예제 public class Singleton { private static Singleton instance = null; // Closed Constructor private Singleton() {}; // Singleton Constructor public static synchronized Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } } 동기화 때문에 성.. 더보기
디자인패턴 정리 디자인 패턴(Design Pattern)디자인 패턴의 정의 -프로그래머들이 유용하다가 생각되는 객체들간의 일반적인 상호작용 방법들을 모은 목록-어떤 분야에서 계속 반복해서 나타나는 문제들을 해결해 온 전문가들의 경험을 모아서 정리한 것-여러 번 반복하여 사용할 수 있는 문제에 대한 솔루션을 기술한 것(Gamma) 디자인 패턴의 역사 -디자인 패턴의 연구는 1990년대 초반 Erich Gamma[1992]에 의해 시작-일반적으로 GoF(Gang of Four)의 분류가 많이 활용되고 있음.-23개의 일반적이고 유용한 패턴들을 제공-패턴을 사용하게 되면 이미 검증된 해결방안을 계속 재사용할 수 있음. 패턴의 구성요소(GoF) -패턴의 이름과 구분: 패턴을 부를 때 사용하는 이름과 패턴의 유형-문제 및 .. 더보기
Adapter vs Bridge, Composite vs Decorator vs Proxy 비교 구조 패턴은 코드와 객체를 구조화하기 위해 언어가 제공하는 아주 작은 범위의 개념을 이용하기 때문에 각 패턴의 구조가 비슷할 수밖에 없다. 이러한 패턴들의 차이점은 왜 이 패턴을 써야 하는가에 있다. Adapter vs Bridge Adapter 패턴과 Bridge 패턴은 둘다 다른 객체에 대한 직접 접근 대신에 다른 우회적 방법으로 접근함으로써 유연성을 증대시킨다. 두 패턴간의 가장 큰 차이는 목적이 무엇인가 하는 것이다. Adapter의 목적은 이미 존재하는 두 인터페이스간의 불일치를 해결하려는 것이다. 그러나 Adapter패턴은 어떤 인터페이스를 어떻게 구현하게 할 것인가라든가, 인터페이스와 구현을 독립적으로 발전시키는 방법은 무엇일까 등의 사항은 전혀 고려치 않는다. 이에 비해 Bridge 패턴의.. 더보기
Factory Method 패턴과 Abstract Factory 패턴의 차이점 Factory Method & Abstract Factory 차이점 작성자 : 박민권 Factory Method 패턴과 Abstract Factory 패턴이 너무 비슷해 보여서 이 두 패턴의 차이점을 정의해봅니다. 두 패턴에 대한 자세한 내용은 이곳에 기술하지 않습니다. 디자인 패턴에 대해 궁금증을 갖고 이 글을 읽으시는 분이라면 상속, 다형성, abstract등 클래스에 대한 기본지식은 알고 있다는 가정하에 글을 작성했습니다. 이해하기 쉽도록 스타크래프트를 예로 설명하겠습니다. 틀린 부분이 있다면 지적 부탁드립니다. Factory Method abstract class 유닛{ void 어택(); } class 마린 : 유닛{ void 어택(){총쏜다;} } class 매딕 : 유닛{ void 어택(){.. 더보기