본문 바로가기
반응형

까망 동네/디자인 패턴25

객체 지향 프로그래밍 5대 원칙 [SOLID] 객체지향 프로그래밍에는 「SOLID」 원칙이 있다. 유연하고 확장성이 있는 코드 재사용에 목적을 둔다. • SRP (Single Responsibility Principle, 단일책임) • OCP (Open-Closed Principle, 개방-폐쇄 원칙) • LSP (Liskov's Substitution Principle, 리스코프 치원 원칙) • ISP (Interface Segregation Principle, 인터페이스 분리 원칙) • DIP (Dependency Inversion Principle, 의존성 역전 법칙) 📌 디자인 패턴(Design Pattern)이란? 💻 디자인 패턴(Design Pattern)이란? 👨‍💻 디자인 패턴(Design Pattern)이란? • SW 개발 방법 중에.. 2023. 11. 19.
[디자인 패턴] 반복자 패턴(Iterator Pattern) 🎈 반복자 패턴 (Iterator Pattern) • 컬렉션 요소를 순회하는 방법을 추상화하는 디자인 패턴 • 반복자: 컨테이너의 요소를 가리키다가 약속된 방식으로 열거하는 객체 • 디자인 패턴 중 행위 패턴에 해당 💻 디자인 패턴(Design Pattern)이란? 👨‍💻 디자인 패턴(Design Pattern)이란? • SW 개발 방법 중에서도 구조적인 문제 해결에 목적을 둔다. • 알고리즘과 같이 특정 문제를 해결하는 Logic 형태보다는 특정 상황에 적용할 수 있는 방 zoosso.tistory.com [예제 코드] #include #include template class Iterator { public: virtual T next() = 0; virtual bool hasNext() = 0; }.. 2023. 11. 14.
[디자인패턴] 방문자 패턴 (Visitor Pattern) 🎈 방문자 패턴 (Visitor Pattern) •객체 구조를 변경하지 않고 객체 연산을 확장할 수 있는 패턴 • 디자인 패턴 중 행위 패턴에 해당 💻 디자인 패턴(Design Pattern)이란? 👨‍💻 디자인 패턴(Design Pattern)이란? • SW 개발 방법 중에서도 구조적인 문제 해결에 목적을 둔다. • 알고리즘과 같이 특정 문제를 해결하는 Logic 형태보다는 특정 상황에 적용할 수 있는 방 zoosso.tistory.com [예제 코드] #include #include class Book; class Magazine; class Visitor { public: virtual void visit(Book& book) = 0; virtual void visit(Magazine& magazi.. 2023. 11. 13.
[디자인 패턴] 경량 패턴 (Flyweight Pattern) 🎈 플라이웨이트 패턴 (Flyweight Pattern) • 객체를 공유하여 메모리 사용을 최적화하는 패턴 플라이웨이트 패턴은 모든 객체를 일일이 생성하지 않고 중복되는 부분을 공유해서 메모리를 가볍게 만드는 패턴 • Flyweight = "Fly 가벼운 + Weight 무게"라는 의미로 (복싱의 체급에서 유래되었다.) • 게임 개발, 웹 브라우저 캐시 등에 활용 가능 • 디자인 패턴 중 구조 패턴 💻 디자인 패턴(Design Pattern)이란? 👨‍💻 디자인 패턴(Design Pattern)이란? • SW 개발 방법 중에서도 구조적인 문제 해결에 목적을 둔다. • 알고리즘과 같이 특정 문제를 해결하는 Logic 형태보다는 특정 상황에 적용할 수 있는 방 zoosso.tistory.com [예제 코드].. 2023. 11. 12.
[디자인 패턴] 프록시 패턴 (Proxy Pattern) 🎈 프록시 패턴 (Proxy Pattern) • 대상 원본 객체를 대신 처리하여 로직 흐름을 제어하는 패턴 • 프록시(Proxy) 사전적인 의미는 '대리인' (= 누군가에게 어떤 일을 대신 시키는 것을 의미) • 활용방안: 보안, 캐싱, 데이터 유효성 검사, 지연 초기화, 로깅 등 • 디자인 패턴 중 구조 패턴에 해당된다. 💻 디자인 패턴(Design Pattern)이란? 👨‍💻 디자인 패턴(Design Pattern)이란? • SW 개발 방법 중에서도 구조적인 문제 해결에 목적을 둔다. • 알고리즘과 같이 특정 문제를 해결하는 Logic 형태보다는 특정 상황에 적용할 수 있는 방 zoosso.tistory.com 프록시 패턴 필요성 Q) 객체에 직접적으로 접근하면 되지 번거롭게 대리자를 통하는 이유는 .. 2023. 11. 11.
[디자인 패턴] 메멘토 패턴 (Memento Pattern) 🎈 메멘토 패턴 (Memento Pattern) • 객체 상태를 저장/복원하는 디자인 패턴 • 스냅샷과 같은 기능으로 "실행 취소" 및 "다시 실행" 구현에 유용 • 활용 예시: 텍스트 에디터, 게임 상태, 회원가입 양식, 데이터베이스 백업 등 • 디자인 패턴 중 행위 패턴에 해당된다. 💻 디자인 패턴(Design Pattern)이란? 👨‍💻 디자인 패턴(Design Pattern)이란? • SW 개발 방법 중에서도 구조적인 문제 해결에 목적을 둔다. • 알고리즘과 같이 특정 문제를 해결하는 Logic 형태보다는 특정 상황에 적용할 수 있는 방 zoosso.tistory.com [예제코드] #include #include class Character { private: std::string name; i.. 2023. 11. 10.
[디자인패턴] 퍼사드 패턴 (Facade Pattern) 🎈 퍼사드 패턴 (Facade Pattern) • 복잡한 시스템을 단순화된 인터페이스를 제공하여 사용자가 시스템 일부분을 쉽게 사용할 수 있도록 한다. • 디자인 패턴 중 구조 패턴에 해당된다. 💻 디자인 패턴(Design Pattern)이란? 👨‍💻 디자인 패턴(Design Pattern)이란? • SW 개발 방법 중에서도 구조적인 문제 해결에 목적을 둔다. • 알고리즘과 같이 특정 문제를 해결하는 Logic 형태보다는 특정 상황에 적용할 수 있는 방 zoosso.tistory.com 활용 방안 • 복잡한 시스템 단순화 • 라이브러리 래핑: 외부 라이브러리 or API를 이용하여 사용자 친화적인 인터페이스 제공 • 기능 묶기: 서브 시스템을 논리적으로 묶어서 일관된 인터페이스 제공 [예제 코드] #in.. 2023. 11. 9.
[디자인 패턴] 관찰자(Observer) 패턴 🎈 감시자 패턴 (Observer Pattern) • 어떤 객체 상태가 변경되면 다른 객체(observer)에게 알리는 디자인 패턴 → 의존관계에 있는 모든 객체들이 통지받고 자동으로 갱신 → 1:多 형태로 Broadcast로 활용 • 옵저버(Observer) 패턴은 객체 간 느슨한 결합 제공 • 데이터 흐름을 관찰하여 분산 이벤트 처리에 유용 → GUI 프레임워크, 게임 엔진, 주식 시장 알림, 예외 처리와 로깅, 발행/구독 • 디자인 패턴 중 행위 패턴에 해당된다. 💻 디자인 패턴(Design Pattern)이란? 👨‍💻 디자인 패턴(Design Pattern)이란? • SW 개발 방법 중에서도 구조적인 문제 해결에 목적을 둔다. • 알고리즘과 같이 특정 문제를 해결하는 Logic 형태보다는 특정 상.. 2023. 11. 6.
[디자인패턴] 컴포지트 패턴 (Composite Pattern) 🎈 컴포지트 패턴 (Composite Pattern) • 객체들을 계층 구조로 구성하여 개별 객체와 복합 객체를 다룬다. • 부분-전체 계층을 표현하는 패턴 • 동일한 인터페이스로 일관성을 유지한다. → 전체적인 구조 유지에 유용함 • 그래픽 라이브러리, 문서 구조, 조직 구조와 같은 시스템에서 활용된다. • 디자인 패턴 중 구조 패턴에 해당된다. 💻 디자인 패턴(Design Pattern)이란? 👨‍💻 디자인 패턴(Design Pattern)이란? • SW 개발 방법 중에서도 구조적인 문제 해결에 목적을 둔다. • 알고리즘과 같이 특정 문제를 해결하는 Logic 형태보다는 특정 상황에 적용할 수 있는 방 zoosso.tistory.com [예제 코드] → 컴포지트 패턴 적용 #include #inclu.. 2023. 11. 5.
[디자인패턴] 인터프리터 패턴 (Interpreter Pattern) 🎈 인터프리터 패턴 (Interpreter Pattern) • 주로 문장 해석하는 목적으로 사용되는 패턴 • 정규 표현식, SQL 구문, 컴파일러 구현에 활용됨 • 디자인 패턴 중 행위 패턴에 해당된다. 💻 디자인 패턴(Design Pattern)이란? 👨‍💻 디자인 패턴(Design Pattern)이란? • SW 개발 방법 중에서도 구조적인 문제 해결에 목적을 둔다. • 알고리즘과 같이 특정 문제를 해결하는 Logic 형태보다는 특정 상황에 적용할 수 있는 방 zoosso.tistory.com [예제 코드] #include class Expression { public: virtual int interpret() = 0; }; class Number : public Expression { private.. 2023. 11. 4.
반응형