CS

잔디심는 정원사
전략 패턴, 스트래티지 패턴 (Strategy Pattern)
·CS/Design Pattern
전략 패턴이란?전략 패턴은 알고리즘의 패밀리를 정의해 캡슐화하고 서로 교환 가능하게 하는 패턴이다. 따라서, 런타임 중에 알고리즘 전략을 선택해 객체 동작을 실시간으로 바뀌도록 할 수 있게 한다.  어떤 일을 수행하는 알고리즘이 여러가지일때 알고리즘 변형이 빈번하게 필요한 경우에 적합하다. 전략 패턴 사용 법ConcreteStarategy: 알고리즘, 행위, 동작을 객체로 정의한 구현체Strategy 인터페이스 : 모든 전략 구현제에 대한 상위 인터페이스Context : 알고리즘을 실행해야 할 때마다 해당 알고리즘과 연결된 전략 객체의 메소드를 호출.클라이언트 : 특정 전략 객체를 컨텍스트에 전달 함으로써 전략을 등록하거나 변경하여 전략 알고리즘을 실행한 결과를 누린다.// 전략(추상화된 알고리즘)in..
상태 패턴 (State pattern)
·CS/Design Pattern
상태 패턴이란?상태패턴은 객체가 특정 상태에 따라 행위를 다르게 할 때, 직접 상태를 조건문으로 검색해서 행위를 다르게 하는 것이 아니라 상태를 객체화해 상태가 행동을 할 수 있도록 위임하는 패턴이다.상태란 객체가 가질 수 있는 어떤 조건이나 상황을 의미한다.예를 들어 티비가 켜져 있는 상태라면 음량 버튼을 누르면 음량이 증가하거나 감소한다. 하지만 티비가 꺼져있는 상태라면 음량버튼을 아무리 눌러도 티비의 음량은 바뀌지 않는다. 즉, 티비 전원의 상태에 따라 메소드 행동이 바뀌는 것이다. 이처럼 객체가 특정 상태에 따라 행위를 달리하는 상황에서 사용되는 최적의 패턴이 스테이트 패턴이다.상태 패턴의 사용 법State 인터페이스 : Context 객체의 현재 상태에 따라 다른 행위를 하는 함수들의 인터페이스..
템플릿 메소드 패턴 (Template Method Pattern)
·CS/Design Pattern
템플릿 메소드 패턴이란?템플릿 메소드 패턴은 여러 클래스에서 공통으로 사용하는 메서드를 템플릿화 하여 상위 클래스에서 정의하고, 하위 클래스마다 세부 동작 사항을 다르게 구현하는 패턴이다. 즉, 변하지 않는 기능(템플릿)은 상위 클래스에 만들어두고 자주 변경되며 확장할 기능은 하위 클래스에서 만들도록 하여, 코드의 중복을 막고 하위 클래스에서 확장을 제어할 수 있도록 한다. 템플릿 메소드 패턴 사용 법Template(추상 클래스)하위 클래스에서 구현해야 할 추상 primitive 오퍼레이션들을 정의알고리즘의 기본 골격을 구성하는 템플릿 메소드를 구현ConcreteClass(구현 클래스)템플릿 메소드에서 이용될 primitive operation들을 구현-> ConcreteClass는 변동되는 부분을 구현..
메멘토 패턴 (Memento Pattern)
·CS/Design Pattern
메멘토 패턴이란?메멘토 패턴은 객체의 구현 세부 사항을 공개하지 않으면서 해당 객체의 이전 상태를 저장하고 복원할 수 있게 해주는 패턴이다. 객체를 이전 상태로 복원할 수 있도록 상태 정보를 어딘 가에 저장해야 한다. 그러나 객체는 일반적으로 상태의 일부 또는 전부를 캡슐화하므로 다른 객체에 액세스할 수 없고 외부에 저장할 수 없다. 이 상태를 노출하면 캡슐화를 위반하여 애플리케이션의 안정성과 확장성을 손상시킬 수 있기 때문이다.  메멘토 패턴 사용 법OriginatorMemento를 이용해 스냅샷들을 생성한다.Memento를 이용해 복원할 수도 있다. MementoOriginator 객체의 스냅샷 역할을 하는 값 객체.Originator 객체 이외의 다른 객체(CareTaker)에서 상태 정보로의 접근..
프로토타입 패턴 (Prototype Pattern)
·CS/Design Pattern
프로토타입 패턴이란?프로토타입 패턴은 객체 생성 비용이 높을 때 주로 사용되는데 새 객체를 생성할 때 원형이 되는 인스턴스를 복제하여 생성하는 패턴이다. 원본 객체를 새로운 객체에 복사하고, 수정할 수 있도록 한다. 이때, 복사된 새로운 객체가 수정되더라도 원본 객체는 수정이 되지 않아야 한다. Java에서는 clone() 메서드를 이용해 객체를 복제할 수 있으며, 이는 Cloneable 인터페이스를 구현하는 클래스에서 가능하다. 프로토타입 패턴 사용 법 Prototype: 복제될 객체의 원형을 정의하는 인터페이스. 이 인터페이스는 자신의 복사본을 만드는 clone() 메서드를 포함Concrete Prototype: Prototype 인터페이스를 구현하고 자신의 복사본을 생성할 수 있는 실제 클래스Cli..
추상 팩토리 패턴 (Abstract Factory Pattern)
·CS/Design Pattern
추상 팩토리 패턴이란?추상팩토리 패턴은 연관성이 있는 객체 군이 여러개 있을 경우 이들을 묶어 추상화하고, 어떤 구체적인 상황이 주어지면 팩토리 객체에서 집합으로 묶은 객체 군을 구현화하는 생성 패턴이다. 클라이언트에서 특정 객체를 사용할 때 팩토리 클래스만을 참조해 특정 객체에 대한 구현부를 감추어 역할과 구현을 분리시킬 수 있다. 즉, 추상 팩토리의 핵심은 제품'군' 집합을 타입 별로 찍어낼 수 있다는 점이 포인트이다. 예를 들어 모니터, 마우스, 키보드를 묶은 전자 제품군이 있는데 이들을 또 삼성 제품군이냐 애플 제품군이냐 로지텍 제품군이냐에 따라 집합이 브랜드 명으로 나뉘게 될때, 복잡하게 묶이는 이러한 제품군들을 관리와 확장하기 용이하게 패턴화한 것이다.추상 팩토리 패턴 사용 방법Abstract..
팩토리 메소드 패턴 (Factory Method Pattern)
·CS/Design Pattern
팩토리 메소드 패턴이란?팩토리 메소드 패턴은 객체를 생성하는 코드를 공장 클래스로 별도의 클래스로 분리해 캡슐화 처리한 패턴이다. 즉, 클라이언트에서 직접 new 연산자를 통해 제품 객체를 생성하는 것이 아닌, 인스턴스화를 서브클래스에 미룬 것이다. 클라이언트는 제품 객체를 생성하는 공장 클래스를 만들고, 이를 상속하는 서브 공장 클래스의 메서드에서 여러가지 제품 객체 생성을 각각 책임지는 것이다.  팩토리 메소드 패턴 사용 법Creator : 최상위 공장 클래스로서, 팩토리 메서드를 추상화하여 서브 클래스로 하여금 구현하도로 함객체 생성 처리 메서드(someOperartion) : 객체 생성에 관한 전처리, 후처리를 템플릿화한 메소드팩토리 메서드(createProduct) : 서브 공장 클래스에서 재정..
빌더 패턴 (Builder Pattern)
·CS/Design Pattern
빌더 패턴이란?빌더 패턴은 객체의 생성 과정과 표현 방법을 분리해 다양한 구성의 인스턴스를 만드는 패턴이다. 생성자에 들어갈 매개 변수를 메서드로 하나하나 받아들이고, 마지막에 통합 빌드해서 객체를 생성한다. 객체의 생성 로직을 클래스 밖으로 옮김으로써 생성자의 복잡성과 비즈니스 룰의 복잡성을 줄일 수 있다.  빌더 패턴 배경1. 점층적 생성자 패턴class Hamburger { // 필수 매개변수 private int bun; private int patty; // 선택 매개변수 private int cheese; private int lettuce; private int tomato; private int bacon; public Hamburger(in..
플라이웨이트 패턴 (Flyweight Pattern)
·CS/Design Pattern
플라이웨이트 패턴이란?플라이웨이트 패턴은 재사용 가능한 객체 인스턴스를 공유시켜 메모리 사용량을 최소화하는 패턴이다. 자주 변하는 속성(extrinsit)과 변하지 않는 속성(intrinsit)을 분리하고 변하지 않는 속성을 캐시하여 재사용해 메모리 사용을 줄이는 방식으로, 동일하거나 유사한 객체들 사이에 가능한 많은 데이터를 서로 공유하여 사용하도록 해 최적화를 노리는 경량 패턴이다. intrinsic vs extrinsic intrinsic란 '고유한, 본질적인' 이라는 의미를 가진다. 즉, 인스턴스가 어떠한 상황에서도 변하지 않는 정보를 말하며 그래서 값이 고정되어 있기에 충분히 언제 어디서 공유해도 문제가 없게 된다. 따라서, intrinsic한 객체는 장소나 상황에 의존하지 않기 때문에 값이 고..
책임 연쇄 패턴 (Chain of Responsibility Pattern)
·CS/Design Pattern
책임 연쇄 패턴이란?책임 연쇄 패턴은 클라이언트의 요청에 대한 처리를 하기 위해 여러 개의 처리 객체들로 나누고, 이들을 chain 마치 사슬처럼 연결해 집합 안에서 연쇄적으로 처리하도록 하는 패턴이다. 이러한 처리 객체들을 핸들러(handler)라고 부르는데, 요청을 받으면 각 핸들러는 요청을 처리할 수 있는지, 없으면 체인의 다음 핸들러로 처리에 대한 책임을 전가한다. 한마디로 책임 연쇄라는 말은 요청에 대한 책임을 다른 객체에 떠넘긴다는 소리이다.책임 연쇄 패턴 사용법 Handler : 요청을 수신하고 처리 객체들의 집합을 정의하는 인터페이스ConcreteHandler : 요청을 처리하는 실제 처리 객체핸들러에 대한 필드를 내부에 가지고 있으며 메서드를 통해 다음 핸들러를 체인시키고 다음  바라본다..
minsu20
'CS' 카테고리의 글 목록 (3 Page)