본문 바로가기

분류 전체보기240

[Design Pattern] 데코레이터 패턴(Decorator Pattern)에 대해 알아보자 Definition 데코레이터 패턴(Decorator Pattern)으로 객체에 추가 요소를 동적으로 더할 수 있다. 데코레이터를 사용하면 서브클래스를 만들 때보다 훨씬 유연하게 기능을 확장할 수 있다. - Structural Pattern Situation - 객체 책임과 행동이 동적으로 수정 가능해야 할때 - 수정을 위한 서브클래싱은 비실용적이거나 불가능할 때 - 구체적인 구현을 둘러싼 많은 객체가 허용될 때 - 객체를 사용하는 코드를 손상시키지 않고 런타임에 객체에 추가 동작을 할당할 수 있어야 하는 경우 - 상속을 사용하여 객체의 동작을 확장하는 것이 어색하거나 불가능 할 때 - Coffee 샵 예제에서 커피에 추가 옵션이 있을 때, whip, 샷 추가, 모카 추가 등등의 전체 가격, 어떤 순서로.. 2022. 6. 23.
[Design Pattern] 옵저버 패턴(Observer Pattern)에 대해 알아보자 Definition Observer Pattern은 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의한다. - Behavioral Pattern Situation - 다른 객체의 상태가 변경될 때마다 어떤 이벤트를 실행하고 싶을 때 - 한 객체의 상태가 변경되면 다른 객체도 변경해야 할 수 있고 실제 객체 집합을 미리 알 수 없거나 동적으로 변경되는 경우 - 앱의 일부 객체가 다른 객체를 제한된 시간 동안 또는 특정 경우 관찰해야 할 때 - 통신에는 느슨한 결합이 필요함 - 하나 이상의 객체의 상태 변경은 다른 객체의 동작을 트리거해야 함 - 방송 기능이 필요할 때 - MVC 패턴에서 사용됨 [ViewCo.. 2022. 6. 21.
[Design Pattern] 전략 패턴(Strategy Pattern)에 대해 알아보자 Definition 전략 패턴은 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 쓸 수 있게 해 준다. 전략 패턴을 사용하면 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경할 수 있다. Situation - 관련되있는 많은 클래스들 사이에 다른 점은 오직 behavior 뿐일 때 - 알고리즘의 여러 버전 또는 변형이 필요할 때 - 알고리즘은 호출 코드가 노출되어서는 안 되는 데이터에 액세스 하거나 데이터를 활용할 때 - 클래스의 동작은 런타임에 정의되어야 함 - 클래스에 동일한 알고리즘의 다른 변형 간에 전환하는 대규모 조건문이 있는 경우 Structure Pros - 요구사항이 변경되었을 때 조건문을 추가하는 등 기존의 코드를 변경하지 않고 새로운 전략에 대해 새로운 클래스로 관리하기 .. 2022. 6. 20.
Google C++ Style Guide : 클래스(Classes) Classes 클래스는 C++에서 코드의 기본 단위이다. 자연스럽게 우리는 클래스를 광범위하게 사용한다. 이 섹션은 클래스를 작성할 때 따라야 하는 주요 사항과 하지 말아야 할 사항을 나열한다. 생성자에서의 작업(Doing Work in Constructors) 생성자에서 가상 메서드를 호출하지 않도록 하고, 오류 신호를 보낼 수 없는 경우 초기화가 실패할 수 있는 것을 방지한다. 정의: 생성자의 body에서 임의의 초기화를 수행할 수 있다. 장점: 클래스가 초기화되었는지 여부에 대해 걱정할 필요가 없다. 생성자 호출에 의해 완전히 초기화된 객체는 const일 수 있으며 표준 컨테이너 또는 알고리즘과 함께 사용하기 더 쉬울 수 있다. 단점: 작업이 가상 함수를 호출하는 경우, 이러한 호출은 하위 클래스 .. 2022. 6. 2.
300x250