이 글은 아래 두 페이지 글을 번역한 것입니다.https://www.geeksforgeeks.org/functional-programming-paradigmhttps://www.geeksforgeeks.org/difference-between-func
디자인 패턴은 소프트웨어 디자인에서 일반적으로 발생하는 문제에 대한 일반적인 솔루션입니다.이는 코드에서 반복되는 디자인 문제를 해결하기 위해 사용자 지정할 수 있는 미리 만들어진 청사진과 같습니다.패턴은 특정 코드 조각이 아니라 특정 문제를 해결하기 위한 일반적인 개념
초창기의 C++은 단순히 C언어에 객체 지향 기능 몇 가지가 결합된 형태초창기 이름도 클래스를 쓰는 C(C with Classes)꾸준히 성장한 C++은 다중 패러다임 프로그래밍 언어가 됨C++을 잘 이해하기 위해서는 한 가지 프로그래밍 규칙 아래 뭉친 통합 언어가 아
Item 5. C++가 은근슬쩍 만들어 호출해 버리는 함수들에 촉각을 세우자 위와 같이 빈 클래스를 만들었다면 컴파일러는 자동적으로 기본 생성자, 복사 생성자, 복사 대입 연산자, 소멸자를 암시적으로 만듬 Item 6. 컴파일러가 만들어낸 함수가 필요 없으면 확실히
Item 13. 자원 관리에는 객체가 그만! 자원 누출을 막기 위해 생성자 안에서 자원을 획득하고 소멸자에서 그것을 해제하는 RAII(Resource Acquisition Is Initialization) 객체를 사용하는 게 좋음 Item 14. 자원 관리 클래스의
Item 18. 인터페이스 설계는 제대로 쓰기엔 쉽게, 엉터리로 쓰기엔 어렵게 하자 Item 19. 클래스 설계는 타입 설계와 똑같이 취급하자 클래스를 설계할 때는 마치 언어 설계자가 그 언어의 기본제공 타입을 설계하면서 쏟아 붓는 것과 똑같은 정성과 보살핌이 필요
객체를 직접적으로 생성하지 않고 객체 생성을 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정하는 패턴입니다.장점생성자와와 소비자 간의 긴밀한 결합을 피합니다.단일 책임 원칙. 제품 생성 코드를 프로그램의 한 위치로 이동하여 코드를 더
정의 추상 팩토리 패턴은 구체적인 클래스를 지정하지 않고 연관된 여러 객체를 생성하는 생성 디자인 패턴입니다. 장단점 장점 공장에서 받는 제품이 서로 호환되는지 확인할 수 있습니다. 구체적인 제품과 클라이언트 코드 간의 긴밀한 결합을 피합니다. 단일 책임
정의 빌더는 복잡한 객체를 단계별로 구성할 수 있는 창조적인 디자인 패턴입니다. 패턴을 사용하면 동일한 코드를 사용하여 객체의 다양한 유형과 표현을 생성할 수 있습니다. 장단점 장점 개체를 단계별로 구성하거나 구성 단계를 연기하거나 재귀적으로 단계를 실행할 수
정의 프로토타입은 코드를 클래스에 종속시키지 않고 기존 개체를 복사할 수 있는 생성 디자인 패턴입니다. 장단점 장점 구체적인 클래스에 연결하지 않고 개체를 복제할 수 있습니다. 미리 빌드된 프로토타입을 복제하기 위해 반복되는 초기화 코드를 제거할 수 있습니다.
정의 싱글톤은 클래스에 인스턴스가 하나만 있어야 하고 동시에 이 인스턴스에 대한 전역 액세스를 제공하는 생성 디자인 패턴입니다. 장단점 장점 클래스에 인스턴스가 하나만 있는지 확인할 수 있습니다. 해당 인스턴스에 대한 전역 액세스 포인트를 얻습니다. 싱
정의 어댑터는 호환되지 않는 인터페이스를 가진 개체가 협업할 수 있도록 하는 구조적 디자인 패턴입니다. 장단점 장점 단일 책임 원칙. 프로그램의 기본 비즈니스 로직에서 인터페이스 또는 데이터 변환 코드를 분리할 수 있습니다. 개방/폐쇄 원칙. 클라이
정의 브릿지는 큰 클래스 또는 밀접하게 관련하는 클래스 세트를 서로 독립적으로 개발할 수있는 두 개의 별도의 계층 (추상과 구현)로 분할 할 수있는 구조 설계 패턴입니다. 장단점 장점 플랫폼에 의존하지 않는 클래스와 응용 프로그램을 만들 수 있습니다. 클라이
정의 복합 객체를 트리 구조로 구성하고 개별 객체인 것처럼 이러한 구조를 조작할 수 있는 구조 설계 패턴입니다. 장단점 장점 복잡한 트리 구조를보다 편리하게 사용할 수 있습니다. 다형성 재귀를 유리하게 사용합니다. 오픈 / 클로즈 원칙. 기존의 코드를
정의 데코레이터는 동작을 포함하는 특수 래퍼 객체 내부에 객체들을 배치하여 객체에 새 동작을 추가할 수 있는 구조적 디자인 패턴입니다. wrapper라고도 알려져 있습니다. 장단점 장점 새로운 서브 클래스를 작성하지 않고 개체의 동작을 확장 할 수 있습니다.
정의 파사드는 라이브러리, 프레임 워크, 또는 기타 복잡한 클래스의 세트로 단순화 된 인터페이스를 제공하는 구조 설계 패턴입니다. 장단점 장점 서브 시스템의 복잡성에서 코드를 분리 할 수 있습니다. 단점 파사드 패턴은 프로그램의 모든 클래스에 결합된 절대
정의 플라이웨이트는 각 객체의 모든 데이터를 유지하는 대신 여러 객체 간에 공통 상태 부분을 공유하여 사용 가능한 RAM 양에 더 많은 객체를 맞출 수 있는 구조적 디자인 패턴입니다. 장단점 장점 프로그램에 유사한 개체가 많이 있다고 가정하면 많은 RAM을 절약
정의 프록시는 다른 개체에 대한 대체 또는 개체 틀을 제공 할 수있는 구조 설계 패턴입니다. 프록시는 원래 개체에 대한 액세스를 제어하여 요청이 원래 개체에 전달되기 전이나 후에 작업을 수행할 수 있도록 합니다. 장단점 장점 클라이언트가 모르는 사이에 서비스 개