1. Factory Method 패턴 이란? 객체를 생성하기 위한 interface를 두고, 이를 구현하는 subclass에서 실제 객체를 생성하도록 하는 패턴이다. new ~ 를 통해 객체를 생성하는 부분을 캡슐화 함으로써, 결합도록 낮츨 수 있다. public abstract class Component { abstract void paint(); } public class Button extends Component { // @override public void paint() { System.out.println("paint BigButton"); } } public class Label extends Component { // @override public void paint() { System..
1994년 Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides(Gang of Four - GOF라 불림) 에 의해 출간 된 "Design Patterns - Elements of Reusable Object-Oriented Software" 은 객체지향적으로 software를 개발하기 위해 자주 사용되는 pattern이 정리 되어 있다.GOF(Gang of Four)의 디자인 패턴은 성격에 따라 크게 3가지로 분류되며, 총 23개의 패턴이 있다.Creational Patterns : 생성 패턴Structural Patterns : 구조 패턴Behavioral Patterns : 행위 패턴- Creational Patterns 5개 -1. Abstract ..
State 패턴이란?- 객체의 상태에 따라 바뀌는 행위를 캡슐화 한 패턴. - 상태에 따라 if, else 조건문으로 분기하는 부분을 제거하여 simple한 코드를 구성할 수 있다. 예제강아지 육성 프로그램(다마고치)을 만들어보자. 사용자는 강아지에게 밥을 주거나, 놀아주는 2가지 행위를 할 수 있다. 그리고 강아지는 GOOD, HUNGRY, BORED 3가지 상태를 가지고, 상태에 따른 다른 행동을 한다. - GOOD : 배고프지도, 심심하지도 않은 상태. - HUNGRY : 배고픈 상태 - BORED : 심심한 상태 public class Damagochi { private static final int GOOD = 0; // 좋은 상태 private static final int HUNGRY = 1..
Template Method 패턴 이란?상위 클래스에서 알고리즘의 뼈대를 결정하고, 하위 클래스에서 구체적인 알고리즘을 구현하는 pattern 상위클래스의 templateMethod() 에서 operation1(), operation2() 를 각각 호출 하며 흐름의 뼈대를 구성하고 있다.operation1(), operation2() 를 추상메쏘드로서 하위 클래스에서 구현한다. 예제 public abstract class Game { abstract void initialize(); abstract void startPlay(); abstract void endPlay(); // 알고리즘의 골격을 구성하는 template method public final void play(){ //initialize ..
Composite 패턴이란? 단일객체와 복합객체를 동일시해서 재귀적인 구조를 만들기 위한 패턴.트리구조의 데이터를 구현할 때 유용 - 위 class diagram을 컴퓨터 파일 시스템에 빗대어 설명해 보자. 파일 시스템은 file과 directory로 이루어져 있고 tree 형태이다. tree 구조의 특성상 하나의 node는 자식을 가질 수 있고, 그 자식이 다시 자식을 가질 수 있다. 자식을 가지는 node가 directory(Composite)이며 자식은 directory 또는 file 이 될 수 있다. 자식을 가지지 않는 node는 file(leaf) 이다. - File = Leaf(내용물) = 단일객체 - Directory = Composite(복합물) = 복합객체 예제 // 사용자가 file과 ..
Singleton 패턴이란? 하나의 instance만 생성하는 것을 보장해 주는 패턴어떠한 instance를 사용할 때 매번 새로운 instance를 생성하는게 아니라, 하나의 instance만 생성하여 동일 instance를 계속 사용하는 방법이다.주로 설정관리를 위한 manager, controller 같은 애들은 하나의 instance를 생성하여 사용하므로 singleton 패턴을 이용한다 다양한 구현 방법 A) class load 시점에 instnace 생성 public class SingletonA { // JVM에 의해 SingletonA class가 load 될 때 instance 생성. private static SingletonA instance = new SingletonA(); pub..
정의 수많은 객체들이 서로 복잡하게 상호작용 하는 경우, 하나의 중재자 클래스를 통해서만 간접적으로 communication 하게 만드는 pattern. 객체들의 M:N 관계를 Mediator를 통해 1:N 관계로 만들어 줌. concreateCollegue1, concreateCollegue2, 3, 4 등의 수많은 객체가 서로 참조하며 복잡하게 상호작용 하는 상황일 경우, 위 diagram 처럼 Mediator 클래스를 통해 각 객체가 간접적으로 comunication 할 수 있다.이는 객체들간의 coupling(결합도)를 줄임으로써 재사용성을 높일 수 있고, 객체간의 유지보수에 용이하다. 예제book, view, search 3개의 Button과 상태를 표시하는 Label 로 구성되는 Java AW..
정의기존 상속구조에서 부모 코드를 변경하지 않고, 런타임에 동적으로 기능을 추가하기 위한 pattern 예제 문제상황 먼저 coffee 가게에서 각 음료의 가격을 알 수 있는 system을 개발한다고 할 때,일반적인 설계구조를 본 뒤, Decorator pattern을 적용하여 개선해 보자. 1. HouseBlend, DarkRoast, Decaf, Espresso 의 가격을 알 수 있는 class 설계 2. 각 음료에 mocha, milk, wheeping 등 재료가 추가 될 수 있으므로 상위 클래스에 관련 기능 추가. 위 설계의 문제점?재료가 추가되면 부모클래스(Beverage)에 method가 계속 추가됨.재료가 변경되거나, 가격이 변경되면 부모클래스(Beverage) 수정 필요함.절대 사용하지 않..
1. rxvt 로 실행Cygwin.bat 파일 수정@echo off C:chdir C:\cyg\bin//아래부분 추가rxvt -display :0 -fn "Lucida Console-14" -tn rxvt-cygwin-native -e /bin/bash --login 2. 한글입력설정홈디렉토리에 .inputrcc 파일 수정//아래 추가set meta-flag onset convert-meta offset output-meta on 3. cygwin 한글 표시 설정env 로 LANG 설정 값 확인vi .bashrcLANG=ko_KR.UTF-8 로 설정cygwin 윈도우 창의 option menu -> text 에서 Locale : ko_KR, Character set : UTF-8 로 변경* vi 편집기에..