design_pattern_practice's Issues
Prototype
Prototype Pattern 은 복잡한 객체를 더 나은 퍼포먼스로 생성하도록 돕는다.
새로운 객체를 생성하는 대신에 Prototype Pattern 안에 존재하는 객체를 복사해서 반환해준다.
미리 생성해놓고 clone해서 객체 사용.
Builder
복잡한 객체를 단순한 객체를 사용해서 만드는 것.
간단하고 작은 개체를 활용해서 한단계씩 점점 더 커지는 객체를 만든다.
스프링의 DI와 비슷.
Adapter
Adapter는 양립할 수 없는 두 독립체의 Converter 이다.
두 인터페이스의 중간 다리 역할로 통합한다.
Singleton
Singleton 은 생성하는 패턴이다.
이 패턴은 그것 자신의 객체에 책임을 지는 오직 하나의 클래스만을 포함한다.
클래스는 하나의 객체만 생성되도록 보장한다.
클래스는 이것의 단지 하나의 객체에 접근하는 방법을 제공한다.
내부 instance 를 static private 하게 해서
함부로 접근 못하게하면서 static 하니까 정적 생성
생성자는 private 으로.
Decorator
Decorator pattern은 Chaining이 없는 이미 존재하는 객체에 새로운 기능을 추가한다.
그것은 기존의 클래스에 대한 wrapper 역할을 한다.
데코레이터 패턴은 원래의 클래스를 래핑하는 데코레이터 클래스를 생성하고 추가 기능을 제공합니다.
Command
Command Pattern 은 데이터 기반 디자인 패턴이다.
요청은 명령으로서 객체 아래에 싸여있고 호출하는 객체로 부터 전달된다.
호출하는 객체는 대응하는 객체에 명령을 전달한다. 그리고 그 객체는 실행한다.
Composite
Composite pattern 은 객체 그룹을 트리 구조로 생성한다.
이 패턴은 객체의 그룹을 하나의 객체처럼 다룬다.
하나의 클래스를 사용해서 트리 구조를 대표한다.
패턴 안에서 우리는 객체들의 그룹을 포함하는 클래스를 만든다.
Template
Template Pattern 에서 부모 추상 클래스는 서브클래스가 추가할 몇 개의 추상 메쏘드를 노출한다
부모 추상 클래스는 비즈니스 로직을 성취할 추상 메소드를 사용하는 몇 개의 메쏘드들이나 다른 메쏘드를 가진다.
그 추상 메쏘드는 종종 부모에 의해 각각의 단계가 요구된다
예시)
abstract class UseSoftware{
abstract void download();
abstract void install();
abstract void configuration();
abstract void run();
public void useNewSoftware(){
download();
install();
configuration();
run();
}
}
State
State Pattern 안에서 클래스의 행동은 상태에 따라서 변한다.
패턴을 사용할 때, 우리는 다양한 상태 객체와 이것의 상태 오브젝트에 따라 행동이 달라지는 context 객체를 만든다.
Strategy
Strategy pattern 안에서 알고리즘은 런타임에 바뀔 수 있다.
이 패턴 에서 다양한 알고리즘과 알고리즘을 실행하는 컨텍스트를 나타내는 객체를 만든다.
이 Strategy 객체는 컨텍스트 객체 위의 알고리즘을 바꾼다.
Facade
Facade Pattern 은 시스템의 복잡성을 숨깁니다.
간단한 인터페이스를 제공함으로써 클라이언트와 시스템 간의 상호작용을 합니다.
하나의 클래스에 인터페이스고 구현이고 다 넣음.
Chain of Responsibility
Chain of Responsibility Pattern 은 요청을 받을 객체의 리스트를 생성한다.
이 패턴을 사용할 때, 보통은 각각의 리시버들은 다른 리시버의 레퍼런스를 포함한다.
만약 한 객체가 요청을 다루지 못 하면 다른 리시버에게 전달되고 처리한다.
Visitor
Visitor Pattern 에서 요소 객체는 방문자 객체를 승인한다. 그리고 방문자는 요소 객체의 operation을 다룬다
요소의 실행하는 알고리즘은 다른 방문객들에 의해 변화된다.
Observer
Observer Pattern 은 만약 한 객체가 수정이 됐을 때, 이것에 의존하는 객체에 알릴 때 사용된다.
Interpreter
Interpreter Pattern 은 보통 언어의 문법이나 표현을 평가하는데 사용된다.
Proxy
Proxy Pattern 안에서 하나의 클래스는 다른 클래스의 기능을 대표합니다.
원래의 인터페이스를 가진 객체를 생성한다. 이 클래스는 객체의 기능을 노출한다.
MVC
Model - 모델은 데이터를 가져오는 객체를 나타낸다. 만약 이 데이터가 변하면 업데이트하는 로직을 가진다.
View - 뷰는 모델을 포함하는 데이타의 시각화를 나타낸다. 종종 이것은 UI 로직을 가진다.
Controller - 컨트롤러는 모델과 뷰를 참조한다. 이것은 모델 객체 내부의 데이터 흐름을 조절한다 그리고 데이터가 변경 됐을 때 뷰를 업데이트한다. 그리고 분리된 뷰와 모델을 가진다.
Filter
Filter Pattern 은 다른 기준들을 사용해서 여과한다.
기준은 논리 연산을 통해 서로 연결 할 수 있다.
Bridge
Bridge Pattern은 이것의 구현으로부터 정의를 분리시킨다.
이 패턴은 다리 역할을 하는 한 인터페이스를 포함한다.
다리는 인터페이스 구현 클래스에서 독립적 구체적인 클래스를 만든다.
클래스 유형 모두가 서로 영향을 미치지 않고 변경 될 수있다.
Pattern
Pattern 이란 무엇인가?
Context - Problem - Solve
Context - 설계 문제를 일으키는 상황
Problem - 반복적으로 발새하는 영향력들
Solution - 영향력들 사이에 균형을 잡아주는 구성 - 런타임 동작, 컴포넌트들과 그들 관계를 표현한 구조
Iterator
Iterator Pattern 은 객체의 근본적인 것을 알 필요 없이 컬렉션 객체의 요소에 순차적으로 접근한다.
Mediator
Mediator Pattern 은 다수의 객체 사이의 커뮤니케이션을 줄여준다.
이 패턴은 다른 클래스들의 모든 커뮤니케이션을 다루는 중재하는 클래스를 제공한다.
Null Object
null 객체의 경우 비즈니스의 의미가 없는 (business-meaningless) 객체가 만들어 진다.
우리는 null pointer 확인을 위해 비지니스의 의미가 없는 객체를 사용한다.
null 객체는 데이터가 이용 불가능할 때 기본적인 행동을 제공합니다
우리는 종종 다양한 operation을 명시한 추상 클래스를 만듭니다.
null 객체와 실체화된 클래스는 이 추상 클래스를 확장합니다.
그 null 객체 클래스는 단지 빈 로직을 제공합니다.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.