Software Architect (25) 썸네일형 리스트형 [Design Pattern] Decorator Pattern Decorator Pattern 단계별 선택지 존재하는 경우 - Choice Step 1 = Big/Small - Choice Step 2 = Fast/Mid/Slow - Choice Step 3 = Robot/Tank 이를 구현하기 위한 방법 1. 모든 케이스에 대한 클래스를 다 만들어주기 ex) BigFastRobot(), BigFastTank() .... - 모든 것을 다 만들어야 함 -> 추가/삭제 등의 유지보수의 어려움 2. 단계별 Class 생성 ex) Step1 { //Big, Small // } Step2 { //Fast/Mid/Slow // } Step3 { //Robot/Tank // } 3. new Big(new Slow(new Robot())) 와 같이 사용할 수 있도록 하는 방법 .. [Design Pattern] Adapter Pattern Adapter Pattern 개요 기존 사용하던 Library 교체가 필요한 경우 기존 코드 수정을 최소화 하기 위해 사용 > 새로운 Library API에 맞도록 Wrapper 생성 > 변환기로 사용 Facade와 비교 (용도가 다름) Facade Adapter 둘다 Wrapper 쉬운 Class 사용을 위한 단순 Wrapper 모듈 교체용 Wrapper 코드 구현 - 1 (변경 전) public class main { // [1] Test가 완료된 모듈 -> 크게 안 건드리고 싶음 public static void run(Azure az) { az.ms_connect(); az.ms_login("ID", "1221"); az.ms_sendData(); az.ms_receiveData(); az.ms_.. [Design Pattern] Facade Pattern Facade Pattern 개요 단순 Wrapper Class Class 사용법이 복잡하여 쉽게 사용하는 Wrapper를 만들때 사용 Design pattern중 가장 간단 구현 방법 //import java.util.ArrayList; //import java.util.List; public class main { public static void main(String[] args) { FacadeWrapper fw = FacadeWrapper.startInstance(); // [1] Singleton 적용 fw.Write("Test.txt", "Write this!!"); // [3] FacadeWrapper만 호출 fw.Read("Test.txt"); } } class FacadeWrapper {.. [Design Pattern] Singleton Pattern Singleton Pattern 개요 객체가 생성되는 최대 개수를 제한하는 방법 적용방법 > 생성자를 Private로 만들어서 Client에서 직접 생성하지 못하도록 함 > getInstance() 메서드를 통해서만 생성이 가능하도록 함 구현방법 public class main { public static void main(String[] args) { KFC kfc = KFC.getMe("Lee"); kfc.status(); KFC kf2 = KFC.getMe("Kim"); kf2.status(); } } class KFC { static KFC kfc; private static String KFCname; private KFC() { }; // [1] KFC k = new KFC() 로 불러서 쓰지.. [Design Pattern] Builder Pattern Builder Pattern 개요 2가지 종류의 Builder Pattern 존재 > Effective Java의 Builder Pattern = 생성자 인자가 많을 때 > GoF의 Builder Pattern = 생성 절차가 복잡할 때 구현 방법 - Java public class main { public static void main(String[] args) { // Cut gunCut = new Cut("군인컷", 2, 1, 1); // [1] // Cut gunCut = new Cut(); // [2] // gunCut.setStyle("군인컷"); // gunCut.setFront(2); // gunCut.setBack(1); // gunCut.setSide(1); // gunCut.statu.. [Design Pattern] Factory Method Pattern Factory Method Pattern 개요 객체 생성을 해주는 별도의 Class에서 수행 생성 코드는 Client에 비공개 구현 방법 - Java public class main { public static void main(String[] args) { Factory f = new Factory(); Doll d1 = f.makeDoll("Blue"); // [1] Class 생성 요청 Doll d2 = f.makeDoll("Red" ); Doll d3 = f.makeDoll("Blue"); d1.push(); d2.push(); d3.push(); } } class Factory { // [2] Class 생성 public Doll makeDoll(String name) { if (name == .. [Design Pattern] GoF Design Pattern 개요 GoF Design Pattern 개요 개요 1995년 GoF(Gang of Four = Erich Gamma, Richard Helm, Ralph Johnson, John Vissides) 디자인 패턴을 구체화 GoF의 디자인 패턴은 소프트웨어 공학에서 가장 많이 사용되는 디자인 패턴 = SW 설계에 공통된 문제에 대한 표준 해법 종류 생성 패턴 개요 객체의 생성과 관련된 패턴 (객체의 인스턴스 과정을 추상화하는 방법) 객체의 생성과 참조 과정을 캡슐화하여 객체가 생성되거나 변경되어도 프로그램 구조에 영향을 받지 않도록 하여 프로그램에 유연성을 더해줌 생성 클래스 패턴은 객체를 생성하는 일부를 서브클래스가 담당하도록 하며, 생성 객체 패턴은 객체 생성을 다른 객체에게 위임함 종류 추상 팩토리(Abstr.. [OOAD] UML & 주요 diagram UML UML이란 Unified Modeling Language 객체지향 설계 표기법의 표준 여러 방법론에서 사용하던 표기법을 하나로 통합(부치, 럼바, 야콥스) -> IEEE 표준 OMG(Object Management Group, 객체지향기술 표준화 기관) 모델 = 실제의 단순화 모델링 = 실제 업무의 추상화 추상화 = 이해하기 쉽게 단순화 -> 복잡한 시스템을 모두 나타내는 것이 아님 UML 특징 UML은 의사소통을 위한 도구 프로젝트 완료될 때 UML도 완성됭됨 설계 능력을 높여주는 것 아님 (or 구현 능력 올려주는 것이 아님) UML 쓰임새 타 조직과의 의사소통 -> 문서를 통한 정확한 의사소통 같은 조직 내 오해방지 -> 획일화된 목표 기획 산출물이 완료되었다는 증거 UML 다이어그램 Str.. 이전 1 2 3 4 다음