Software Design Pattern 썸네일형 리스트형 Software Architectural Patterns 출처 : https://towardsdatascience.com/10-common-software-architectural-patterns-in-a-nutshell-a0b47a1e9013 1. Layered pattern2. Client-server pattern3. Master-slave pattern4. Pipe-filter pattern5. Broker pattern6. Peer-to-peer pattern7. Event-bus pattern8. Model-view-controller pattern9. Blackboard pattern10. Interpreter pattern 더보기 GoF 디자인 패턴 22가지(정리), 객체지향 5대 원칙(SOLID) GoF 디자인 패턴 22가지생성 5가지 - Singleton : 오직 하나의 객체를 생성, 어디서든 동일한 방법으로 접근 - Factory Method : 객체 생성에 관련된 가변성을 메소드로 분리 - Absract Factory : 공장도 인터페이스 기반으로 - Prototype : 견본에 의한 생성 - Builder : 동일한 구축 공정, 다른 표현 객체 생성 구조 7가지 - Composite : 재귀적 합성을 통한 복합 객체 구성 - Decorator : 재귀적 합성을 통한 동적인 기능의 추가 - Adpater : 인터페이스의 변경 - Bridge : 구현과 추상을 분리 - Proxy : 기존 요소를 대신하는 클래스 - Facade : 하위 시스템의 복잡함을 단순화 시키는 상위 클래스 제공 - Fl.. 더보기 Proxy Pattern(대리자 패턴) Proxy Pattern(대리자 패턴): 처리 과정이 복잡하거나, 시스템의 리소스를 많이 필요로 하거나 하는 객체가 있을 때,대리자를 두어 간단한 일은 대리자가 처리하고실제 해당하는 객체가 필요할 때 생성하여 처리. ///Virtual Proxy Proxy Pattern의 종류1 Remote Proxy : 원격 객체에 대한 로컬의 대리자 - RMI(Remote Method Invoke) - RPC(Remote 프로시저 Call)2 Virtual Proxy : 많은 비용을 요구하는 객체를 생성하는 경우 프로그램의 로딩 속도가 느려지므로, 대리자를 두어 진짜 필요할 때 생성하는 기법.3 Protection Proxy : 보호가 요구되는 객체에 접근을 통제하는 대리자 Collections.unmodifiedC.. 더보기 Flyweight pattern Flyweight pattern: 속성과 동일한 객체가 다수 생성된다면하나의 객체를 공유해서 사용하자. 방법1. 팩토리를 통한 경량 패턴 구현=> 이건 싱글톤을 사용하는데 이방법 보다는 다른 방법이 낫다 방법2. 정적 팩토리 메소드를 이용한경량 패턴Wrapper Class : Integer, Long, Boolvalues.add(10); -> values.add(Integer.valueOf(10)) Flyweight 패턴에서 주의할 점-> Immutable Object로 제공되어야 한다. Function -> Pure Functionf(x1, x2) -> y: 수학적 함수의 형태를 프로그래밍 적으로 구현하는 것!Pure Function Java8 - 인터페이스를 이용한 경량 패턴. 더보기 브릿지(Bridge) 패턴 사용자가 새로운 기능을 요구하였을 때 인터페이스는 쉽게 변경 될 수 없다.(인터페이스가 변경되면, 다른 자식 클래스도 깨진다.) 브릿지(Bridge) 패턴 - C++에서는 브릿지 패턴을 핌플 이디엄이라고 한다C++ : pImpl idiom(Pointer to Implementation): 사용자가 구현부를 직접 사용하게 하지 말고, 중간층(Bridge)를 도입하면 변화에 쉽게 대응할 수 있다.- 구현부와 인터페이스(추상부, 사용자가 사용하는 클래스)를 분리해서상호 독립적인 변경 확장이 편리하게 한다.- 구현부의 변화 없이 인터페이스를 변경하고, 인터페이스의 변경 없이,구현부를 변경할 수 있다. 브리지패턴은 라이브러리 설계할 때 한번쯤은 고려해 볼 만 하다. 더보기 Facade(퍼사드) 패턴 Facade(퍼사드) 패턴: 하위 시스템의 복잡함을 단순화시켜주는 상위 클래스(중간층을 제공하자)=> 여러 클래스를 사용해서 하나의 작업을 한다면, 그 복잡함을 하나로 묶어 주자. 더보기 책임의 전가 패턴 책임의 전가 패턴 이걸 이용해서 로거를 만들어 보자 WriteMessage(Info/Debug/Error)Logger -> Console -> Mail -> File자기 책임인지 확인하고 다음으로 전달 책임의 전가(Chain of Responsibility): 이벤트 발생시 처리되지 않을 경우 다음객체에게 전달하는 패턴=> 처리할 수 있을 때까지 고리에 따라 이벤트를 전달한다. 이벤트와 이벤트 처리 객체의 결합도를 줄일 수 있다. 자바의 Logger에서도 이렇게 구현됨 또 다른 사용 예OS X 계열의 GUI 라이브러리(코코아, 코코아 터치)- Touch 이벤트(Responder Chain): MyUIView -> UIView -> MyViewController -> UIViewController -> A.. 더보기 Cloneable Cloneable-> 복사 생성자(C++) 객체의 복사가 목적이라면, Cloneable 보다 복사 생성자가 좋다. 더보기 추상 팩토리 패턴 추상 팩토리 패턴Abstract Factory Pattern: 추상적인 부품을 조합해서 추상적인 제품을 만든다 - ?? 모호=> 공장도 인터페이스 기반으로 만들어서 교체 가능하게 하자.: 관련된 제품군을 생성하기 위해 공장을 바로 만들지 말고 인터페이스 부터 설계하자. 더보기 데코레이터 패턴 포장지 패턴(Decorator Pattern)상속은 객체의 기능의 변경이 아닌 클래스의 변경이다.=> 동적인 변경이 아닌 정적인 변경=> 실행 시간에 기능을 변경하는 것이 불가능하다. 기능을 추가한 객체에 다시 기능을 추가할 수 있어야 한다. 데코레이터 패턴 핵심포장지는 객체를 포함하지만 포장된 객체를 다시 포장할 수 있어야 한다.=> 포장지와 객체는 동일 부모가 필요하다. 재귀적 합성을 통한 기능의 추가 => 데코레이터 패턴(Composite패턴은 재귀적 합성을 통한 복합 객체의 구성)class RightMissile implements Item { private Item spaceShip; ...} 재귀적 합성을 사용하는 디자인 패턴 2가지재귀적 합성을 통한 복합 객체 구성 - 컴포지트 패턴재귀적 합.. 더보기 이전 1 2 3 4 다음