본문 바로가기

전체 글79

장식자 패턴(Decorator Pattern) 이해하기 : 쉽게 설명한 디자인 패턴(C++) 장식자 패턴은 객체의 결합을 통해 기능을 동적으로 유연하게 확장할 수 있게 해주는 디자인 패턴입니다. 이 패턴은 기본 객체에 추가적인 기능을 덧붙이는 데 사용되며, 이를 통해 기능을 계층적으로 확장할 수 있습니다. 장식자 패턴은 객체 지향 설계 원칙 중 하나인 개방-폐쇄 원칙(OCP, Open-Closed Principle)을 따릅니다. 이 원칙은 “소프트웨어 구성요소는 확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다”는 원칙입니다. 이제 C++을 사용한 장식자 패턴의 예시를 살펴보겠습니다. #include #include // Component class Beverage { public: virtual ~Beverage() = default; virtual std::string getDescri.. 2024. 1. 28.
복합체 패턴(Composite Pattern) 이해하기 : 쉽게 설명한 디자인 패턴(C++) 1. 복합체 패턴이란? 복합체 패턴은 객체들의 그룹을 단일 객체처럼 다룰 수 있게 해주는 구조적 디자인 패턴입니다. 이 패턴을 사용하면, 클라이언트는 개별 객체와 복합 객체를 동일하게 취급할 수 있습니다. 2. 복합체 패턴의 구조 복합체 패턴은 다음과 같은 세 가지 주요 구성 요소로 이루어져 있습니다. Component: 모든 구성 요소에 공통인 인터페이스를 정의합니다. Leaf: 개별 객체를 나타내는 클래스입니다. Composite: 구성 요소의 그룹을 나타내는 클래스입니다. 3. 복합체 패턴의 예시 이제 C++를 사용하여 복합체 패턴을 어떻게 구현하는지 살펴보겠습니다. 여기서는 파일 시스템의 예제를 사용하겠습니다. #include #include #include // Component class Fi.. 2024. 1. 28.
기교 패턴(Bridge Pattern) 이해하기 : 쉽게 설명한 디자인 패턴(C++) 1. 기교 패턴이란? 기교 패턴은 구현부에서 추상화 부분을 분리하여 각자 독립적으로 변형할 수 있게 하는 디자인 패턴입니다. 이 패턴은 클래스의 기능과 구현을 두 개의 별도의 클래스 계층으로 분리하여 이들이 각각 독립적으로 변형될 수 있게 합니다. 2. 기교 패턴의 구조 기교 패턴은 다음과 같은 네 가지 주요 구성 요소로 이루어져 있습니다. Abstraction: 추상화를 정의하고, Implementor에 대한 인터페이스를 유지합니다. RefinedAbstraction: Abstraction 클래스를 확장하는 클래스입니다. Implementor: 구현 클래스의 인터페이스를 정의합니다. ConcreteImplementor: Implementor 인터페이스를 구현하는 클래스입니다. 3. 기교 패턴의 예시 이.. 2024. 1. 28.
적응자 패턴(Adapter Pattern) 이해하기 : 쉽게 설명한 디자인 패턴(C++) 1. 적응자 패턴이란? 적응자 패턴은 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 디자인 패턴입니다. 이 패턴을 사용하면 인터페이스가 호환되지 않아 함께 작동할 수 없는 클래스들이 함께 작동하도록 할 수 있습니다. 2. 적응자 패턴의 구조 적응자 패턴은 다음과 같은 세 가지 주요 구성 요소로 이루어져 있습니다. Target: 사용자가 기대하는 인터페이스를 정의합니다. Adaptee: 적응되어야 하는 인터페이스를 가진 클래스입니다. Adapter: Adaptee의 인터페이스를 Target 인터페이스로 적응시킵니다. 3. 적응자 패턴의 예시 이제 C++를 사용하여 적응자 패턴을 어떻게 구현하는지 살펴보겠습니다. 여기서는 라운드 핀을 가진 전원 플러그를 미국 스타일의 두 핀 플러그로 적응.. 2024. 1. 28.
[C++] GOF의 디자인 패턴 총 정리 [C++] 디자인 패턴 GoF 의 디자인 패턴 생성 패턴 -추상 팩토리(Abstract Factory) -빌더(Builder) -팩토리 메서드(Factory Method) -원형(Prototype) -단일체(Singleton) 구조패턴 -적응자(Adaptor) -기교(Bridge) -복합체(Composite) -장식자(Decorator) -퍼사드(Facade) -플라이급(Flyweight) -프록시(Proxy) 행동 패턴 책임 연쇄(Chain of Reponsibility) 명령(Command) 해석자(Interpreter) 반복자(Iterator) 중재자(Mediator) 메멘토(Memento) 감시자(Observer) 상태(State) 전략(Strategy) 템플릿 메서드(Template Method.. 2024. 1. 28.
혼자 공부하는 컴퓨터 구조+운영체제 완독 후기 전자공학을 전공하고 설비엔지니어로 취업했던 나는 최근 들어서 계열사 이동을 통해서 sw개발 직무로 변경하였다.. 항상 컴퓨터에 대한 지식이 부족하다고 느낀 상황에서 컴퓨터 구조+ 운영체제에 대해서 공부를 해야겠다고 생각했다... 이것저것 유튜브도 보고 블로그 글도 보면서 공부를 조금씩 했었는데 뭔가 지식을 체득하는 느낌이 전혀 없어서 .. 최근에 폭풍 웹 서핑을 통해서 위와 같은 책을 샀다..(광고 절대 아님 ㅋㅋㅋ 리얼 절대 아님xxxx) 책 리뷰나 , 소개 같은걸 찾아보았고 여자친구랑 같이 서점에가서 실물을 확인하고나서 나같은 녀석한테 필요한 책이라고 생각해서 바로 구매 했다...(어제 저녁 자기전에 잠이안와서 chapter 2까지 봤는데) 결론은 극추천한다, 특히 다음과 같은 사람에게 추천하고싶다... 2023. 7. 3.
전략 패턴(Strategy Pattern) 이해하기 : 쉽게 설명한 디자인 패턴(C++) 안녕하세요. 이번 포스트에서는 전략 패턴(Strategy Pattern)에 대해 알아보도록 하겠습니다. 전략 패턴은 행동 디자인 패턴 중 하나로, 알고리즘을 캡슐화하여 실행 시에 알고리즘을 변경할 수 있게 하는 패턴입니다. 그러면 이번에는 전략 패턴이 무엇인지, 어떻게 사용하는지에 대해 자세히 살펴보겠습니다. 전략 패턴이란? 전략 패턴은 객체의 행동을 캡슐화하고, 이를 객체 안에서 동적으로 바꿀 수 있게 해주는 디자인 패턴입니다. 즉, 객체가 할 수 있는 행동 각각을 전략으로 만들어, 행동하는 방식을 동적으로 바꿀 수 있도록 해주는 패턴입니다. 이로 인해 행동을 클래스로 캡슐화하고, 이를 인터페이스로 사용함으로써 코드의 유연성과 확장성이 향상됩니다. 예시를 통한 이해 전략 패턴의 사용을 이해하기 위해 교.. 2023. 7. 3.