디자인 패턴 25

[디자인 패턴] 14장 반복자 패턴

공부하기 위해서 요약정리해놓은 것입니다.. 정확하고 꼼꼼한 자료는 쉽게 배워 바로 써먹는 디자인 패턴을 확인하시고 코드는 github.com/infohojin/patterns 을 참고해 주세요. 반복자 패턴은 내부 구조를 노출하지 않고 집합체를 통해 원소 객체에 순차적으로 접근할 수 있는 방법을 제공합니다. 객체의 집합 집합은 어떤 조건에 의해 모인 요소의 묶음입니다. 객체의 데이터 또는 기능을 집합으로 묶어 처리할 수 있습니다. 배열은 유사한 조건의 데이터를 하나의 집합으로 묶어서 처리합니다. $fruit = ['apple','banana','berry']; 배열의 특징은 하나의 변수명을 사용해 여러 데이터를 저장한다는 것입니다. PHP와 같은 동적 데이터를 저장하는 언어에서는 배열에 문자열뿐만 아니라..

[디자인 패턴] 13장 프록시 패턴

공부하기 위해서 요약정리해놓은 것입니다.. 정확하고 꼼꼼한 자료는 쉽게 배워 바로 써먹는 디자인 패턴을 확인하시고 코드는 github.com/infohojin/patterns 을 참고해 주세요. 프록시 패턴은 객체 접근을 제어하기 위해 중간 단계에 대리자를 위치시키는 패턴입니다. 프록시는 무슨 일을 직접 처리하지 않고 대리자를 내세워 처리를 위임합니다. 프록시의 특징은 하나의 객체를 두 개로 나눠 재구성한다는 것입니다. 분리하는 이유는 직접적인 접근을 막고 대리할 객체를 구현하기 위해서입니다. 범위에 따라 다르게 불리는 파생 프록시들도 많습니다. - 원격 프록시 - 가상 프록시 - 보호 프록시 - 스마트 프록시 이 외에도 방화벽 프록시, 래퍼런스 프록시, 동기화 프록시 등의 다양한 프록시가 있습니다. 객..

[디자인 패턴] 12장 플라이웨이트 패턴

공부하기 위해서 요약정리해놓은 것입니다.. 정확하고 꼼꼼한 자료는 쉽게 배워 바로 써먹는 디자인 패턴을 확인하시고 코드는 github.com/infohojin/patterns 을 참고해 주세요. 플라이웨이트 패턴은 객체를 공유하기 위해 구조를 변경하는 패턴입니다. 객체를 공유하면 객체를 재사용할 수 있어 시스템 자원이 절약됩니다. 메모리 자원 $obj = new 클래스 명; 위와 같이 new 키워드를 통해서 객체를 생성합니다. 이때 시스템 자원을 할당받게 됩니다. 이러한 객체는 동작을 수행하는 메서드와 데이터를 포함하는 프로퍼티로 구성돼 있습니다. 클래스를 설계할 때는 객체가 하나의 책임만 갖도록 합니다. 이를 단일 책임 원칙이라고 합니다. 하나의 객체가 다양한 기능과 책임을 가지면 관리하기가 어려워집니..

[디자인패턴] 11장 파사드 패턴

공부하기 위해서 요약정리해놓은 것입니다.. 정확하고 꼼꼼한 자료는 쉽게 배워 바로 써먹는 디자인 패턴을 확인하시고 코드는 github.com/infohojin/patterns 을 참고해 주세요. 퍼사드 패턴은 프로그래밍 언어에서 관심사를 분리하는 패턴입니다. 파사드의 어원은 프랑스어로 건물의 정면이라는 뜻을 갖고 있습니다. 건물의 외관, 겉모습을 말하며 사전적으로 '표면, 허울'로도 해석됩니다. 협업을 위한 분리 작업 파사드는 요즘과 같이 협업과 대형 시스템을 개발하고 배포하는 데 자주 응용되는 패턴입니다. 파사드는 시스템 결합과 사용이 용이하도록 관심사를 분리합니다. 하나의 서비스를 여러 개발자와 공동으로 만드는 과정은 쉽지 않습니다. 분리된 기능별 모듈을 하나로 합치는 과정에서도 수많은 난관에 봉착합..

[디자인 패턴] 10장 장식자 패턴

공부하기 위해서 요약정리해놓은 것입니다.. 정확하고 꼼꼼한 자료는 쉽게 배워 바로 써먹는 디자인 패턴을 확인하시고 코드는 github.com/infohojin/patterns 을 참고해 주세요. 장식자 패턴은 객체에 동적 기능을 추가하기 위해 구조를 개선하는 패턴입니다. 다양한 확장을 위해 객체를 조합합니다. 기능 추가 새로운 기능을 추가하기 위해 클래스를 확장하는 방법은 상속과 구성이 있습니다. 기존 객체를 확장해 새로운 기능을 추가해야 하는 경우가 있습니다. 객체지향에서는 새로운 기능을 추가하기 위해 상속을 사용합니다. 상속은 클래스를 확장하는 대표적인 구현 기법입니다. 하지만 상위 클래스와 하위 클래스 간에 강력한 결합 관계가 생성된다는 것입니다. 이런 강력한 결합은 유연한 확장이 어렵고, 새로운 ..

[디자인패턴] 9장 복합체 패턴

공부하기 위해서 요약정리해놓은 것입니다.. 정확하고 꼼꼼한 자료는 쉽게 배워 바로 써먹는 디자인 패턴을 확인하시고 코드는 github.com/infohojin/patterns 을 참고해 주세요. 복합체 패턴은 객체 간의 계층적 구조화를 통해 객체를 확장하는 패턴입니다. 복합체는 재귀적으로 결합된 계층화된 트리 구조의 객체입니다. 객체를 포함하는 객체 복합 객체는 객체가 또 다른 객체를 포함하는 것을 말합니다. 복합적인 객체 관계를 복합화 또는 집단화라고 합니다.

[디자인 패턴]8장 브리지 패턴

공부하기 위해서 요약정리해놓은 것입니다.. 정확하고 꼼꼼한 자료는 쉽게 배워 바로 써먹는 디자인 패턴을 확인하시고 코드는 github.com/infohojin/patterns 을 참고해 주세요. 브리지 패턴은 객체의 확장성을 향상하기 위한 패턴으로, 객체에서 동작을 처리하는 구현부와 확장을 위한 추상부를 분리합니다. 다른 용어로는 핸들패턴 또는 구현부 패턴이라고도 합니다. 복잡한 코드 세상에 완벽한 프로그램은 없습니다. 따라서 발견하지 못했던 기능을 추가하거나, 새로운 업무를 추가하는 작업이 필요합니다. 이처럼 추가 요청에 의해 기존에 완성된 코드를 변경 작업하는 것을 유지 보수라고 합니다.

[디자인 패턴]7장 어댑터 패턴

공부하기 위해서 요약정리해놓은 것입니다.. 정확하고 꼼꼼한 자료는 쉽게 배워 바로 써먹는 디자인 패턴을 확인하시고 코드는 github.com/infohojin/patterns 을 참고해 주세요. 어댑터 패턴은 코드를 재사용하기 위해 구조를 변경하는 패턴입니다. 오래된 코드 & 잘못된 코드 오래된 코드의 경우 우리는 새로운 기능을 만들기 위해 오래된 코드를 참고하거나 기존의 코드를 재사용합니다. 즉 이전 코드를 재사용하면서 새로운 코드를 재창조하는 것입니다. 하지만 모든 코드를 재사용할 수는 없습니다. 기술 발전, 환경 변화, 고객 요구 변경 등으로 인해서 기존의 코드를 재사용할 수 없도록 방해하는 요인이 됩니다. 개발자는 자신의 코드가 향후 재사용되도록 하기 위해 다양한 변화를 예측합니다. 그러나 완벽한..

[디자인패턴] 6장 프로토타입 패턴

공부 하기 위해서 요약 정리 해놓은 것입니다.. 정확하고 꼼꼼한 자료는 쉽게 배워 바로 써먹는 디자인 패턴을 확인 하시고 코드는 github.com/infohojin/patterns 을 참고해 주세요. 객체를 생성할 수 있는 방법이 new 키워드를 이용하는 방법과 객체를 복제하여 생성하는 방법이 있습니다. 프로토타입 패턴은 new 키워드를 사용하지 않고 객체를 복제해 생성하는 패턴입니다. 생성 객체를 생성하기 위해서는 먼저 클래스 선언이 필요합니다. 따라서 Hello 클래스를 선언했습니다.

[디자인패턴] 5장 빌더 패턴

공부 하기 위해서 요약 정리 해놓은 것입니다.. 정확하고 꼼꼼한 자료는 쉽게 배워 바로 써먹는 디자인 패턴을 확인 하시고 코드는 github.com/infohojin/patterns 을 참고해 주세요. 빌더 패턴은 추상 팩토리를 확장하여 크고 복잡한 객체를 생성할 수 있습니다. 건축물 빌더(builder)의 사전적 의미는 '건축물을 짖는 사람 또는 회사'입니다. 즉, 커다란 구조의 큰 물체를 설계하고 만드는 것을 의미합니다. 객체의 종류에는 단일 객체와 복합 객체 2가지가 있습니다. 단일 객체란 하나의 클래스로 생성된 객체를 말합니다. 객체는 데이터와 행동을 가지며 때로는 객체를 확장하기 위해 상속 구조를 적용하기도 합니다. 팩토리. 팩토리 메서드, 추상 팩토리 모두 단일 객체를 사용합니다. 복합객체는 ..