전체 글 (51) 썸네일형 리스트형 [Design pattern] 템플릿 메소드(Template Method) 패턴 템플릿 메소드(Template Method) 패턴 Template Method 패턴은 알고리즘의 골격(템플릿)을 정의하고, 구체적인 단계(step)는 서브클래스에서 구현하도록 일부 로직을 위임하는 패턴입니다. 즉, 상위 클래스에 알고리즘 흐름을 고정해놓고, 세부 구현은 하위 클래스에서 처리하게 하는 방식입니다.Template Method 패턴은 다음과 같은 경우에 사용할 수 있습니다.알고리즘의 구조는 동일하지만, 일부 단계의 구현만 바뀌는 경우코드 중복을 피하면서 공통적인 흐름을 재사용하고 싶을 때하위 클래스가 알고리즘의 흐름을 바꾸지 않도록 강제하고 싶을 때템플릿 메소드 패턴 구성요소 AbstractClass (추상 클래스)템플릿 메서드를 정의하고, 공통 로직과 추상 메서드를 포함함ConcreteCla.. [Design pattern] 상태(State) 패턴 상태(State) 패턴 State 패턴은 객체의 상태에 따라 동작을 다르게 정의하는 디자인 패턴입니다.상태를 객체로 캡슐화하여, 상태 전환이 일어날 때 행위도 함께 바뀌도록 만듭니다.즉, if-else나 switch로 분기하지 않고, 상태별 클래스로 행동을 나눕니다.State 패턴은 아래와 같은 경우에 사용할 수 있습니다. 객체의 내부 상태에 따라 행동이 바뀌어야 할 때조건문이 상태 전환 로직에 많이 쓰이는 경우상태 전환이 복잡해지고, 각 상태마다 별도의 행동이 필요할 때상태(State) 패턴 구성요소1. Context (문맥)상태를 가지고 있고, 상태에 따른 행위를 위임하는 객체2. State (상태 인터페이스)상태별 행동을 정의하는 인터페이스3. ConcreteState (구체 상태)실제 상태를 나타.. [Design pattern] 중재자(Mediator) 패턴 중재자(Mediator) 패턴 Mediator패턴은 객체 간의 복잡한 상호작용을 중재자 객체 하나에 위임하여, 객체 간의 의존 관계를 줄이고 느슨한 결합을 가능하게 해주는 디자인 패턴입니다.즉, 여러 객체가 직접 통신하지 않고 중앙 통제 객체(Mediator)를 통해서만 상호작용하게 만드는 구조입니다.Mediator패턴은 다음과 같은 경우에 사용합니다.객체들이 서로 긴밀하게 연결되어 있어 의존성이 높고 복잡할 때객체 간 통신 로직을 하나의 클래스로 캡슐화하여 관리하고 싶을 때다대다 관계의 상호작용을 다루기 어려울 때 중재자(Mediator) 패턴 구성요소1.Mediator (중재자 인터페이스)객체 간의 상호작용을 조정하는 인터페이스 2.ConcreteMediator (구체 중재자)객체들 간의 통신 및 협.. [Design pattern] 책임 연쇄(Chain of Responsibility) 패턴 책임 연쇄(Chain of Responsibility) 패턴 Chain of Responsibility 패턴은 요청을 처리할 수 있는 객체들을 체인으로 연결하고, 요청을 순차적으로 전달하여 그 중 하나가 처리하도록 하는 패턴입니다.요청을 보낸 쪽은 어떤 객체가 처리할지 몰라도 되고, 객체들은 다음 객체로 책임을 넘길 수 있습니다.Chain of Responsibility 패턴은 다음과 같은 경우에 사용됩니다.요청을 처리할 수 있는 여러 객체 중 하나가 처리하게 하고 싶을 때요청 처리 객체를 동적으로 연결하거나 변경하고 싶을 때조건문(if-else, switch 등)이 너무 많아지는 상황을 개선하고 싶을 때책임 연쇄(Chain of Responsibility) 패턴 구성요소1. Handler (추상처리자).. [Design pattern] 커맨드(Command) 패턴 커맨드(Command) 패턴Command 패턴은 요청을 객체로 캡슐화하여, 요청에 필요한 모든 정보를 담아 호출자(Invoker)와 수신자(Receiver)를 분리하는 디자인 패턴입니다. 이 패턴을 사용하면 명령을 큐잉, 로깅, 취소(Undo) 같은 기능도 쉽게 확장할 수 있습니다.Command 패턴은 다음과 같은 경우에 사용할 수 있습니다.실행할 명령을 매개변수화하고 싶을 때명령을 큐에 저장하거나 로그로 기록하고 싶을 때실행 취소(Undo)/재실행(Redo) 기능을 구현하고 싶을 때호출자와 수신자 간의 결합을 느슨하게 만들고 싶을 때커맨드(Command) 패턴 구성요소 1. Command (명령 인터페이스)실행될 명령을 선언하는 인터페이스. execute() 메서드가 핵심 2.ConcreteComman.. [Design pattern] 옵저버(Observer) 패턴 옵저버(Observer) 패턴 Observer 패턴은 객체의 상태 변화를 관찰자(Observer)에게 자동으로 통보하는 디자인 패턴을 말합니다.한 객체의 상태에 변화가 일어나면 그 객체에 등록된 여러 관찰자들에게 알림을 보내서 일관성있게 동작하게 해줍니다.Observer 패턴은 다음과 같은 경우에 사용됩니다.한 객체의 상태 변화를 여러 다른 객체가 알아야 할 때느슨한 결합을 유지하면서 이벤트 기반 통신을 구현하고자 할 때MVC 패턴에서 View가 Model의 변경을 자동으로 반영해야할 때옵저버(Observer) 패턴 구성요소1. Subject상태를 관리하고 Observer를 등록·제거 ·알림하는 인테페이스 정의2. ConcreteSubject실제 상태를 가지고 있는 클래스, 상태가 변하면 Observer.. [Design pattern] 전략(Strategy) 패턴 전략(Strategy) 패턴전략 패턴은 행위를 각각의 전략(Strategy) 클래스로 캡슐화하여, 런타임에 알고리즘을 자유롭게 바꿀수 있도록 해주는 디자인 패턴을 말합니다.즉 행위(Behavior)를 객체화하고, 실행 중에 교체 가능하도록 설계하는 패턴입니다.전략 패턴은 아래와 같은 경우에 사용합니다.알고리즘(로직)이 여러개 존재하고, 상황에 따라 동적으로 교체해야할 때조건문이 많고 각 분기마다 알고리즘이 다른 경우실행 중에 알고리즘을 바꾸고 싶을 때전략(Strategy) 패턴 구성요소전략 패턴은 다음과 같이 구성됩니다.1. Strategy(전략 인터페이스)알고리즘에 공통으로 적용되는 인터페이스 정의2. ConcreteStrategy (구체 전략 인터페이스)Stragety를 구현한 실제 알고리즘3. Co.. [Python] 메타클래스(Meta Class) 이해하기 파이썬에서는 모든 것이 객체다. 파이썬 프로그램에서는 모든 데이터는 객체 개념을 사용하여 저장됩니다.가장 기본적인 데이터 타입인 숫자, 문자열, 리스트, 사전 뿐만 아니라 함수, 모듈, 심지어 클래스조차도 객체입니다.즉, 우리가 작성하는 클래스도 어떤 방식으로든 생성이 되고 관리되는 대상이라는 것입니다.예를 들어서 아래와 같은 코드를 보면class Foo: pass print(type(sampleClassA)) # Foo는 사용자가 정의한 클래스이지만 실제로는 type 이라는 이름의 객체에 의해 생성된 것으로 확인할 수 있습니다.다시 말해서 클래스 자체도 객체이며, 클래스를 생성하는 다른 존재가 있다는 것을 알 수 있습니다.이 역할을 하는 것이 바로 메타클래스(Metaclass)입니다.인스턴스를 만.. 이전 1 2 3 4 ··· 7 다음