C# 75

[GoF]11.플라이급 패턴(Flyweight Pattern)

1.정의 -플라이급 패턴은 개체의 멤버 필드 중에 각 개체가 반드시 갖고 있어야 할 멤버와 여러 개체가 공유해서 사용할 수 있는 멤버로 분리하고 공유해서 사용할 수 있는 멤버가 가질 수 있는 상태의 종류가 개체의 수보다 상대적으로 적다면 메모리 효율을 높일 수 있는 패턴. - 공유해서 사용할 수 있는 상태들을 공유 풀에 형성하고 각 개체는 특정 상태를 참조한다. 2.시나리오 -아들은 사진을 찍고 편집하는 것을 즐기는 와중에 영상처리 관련 프로그램을 만드는 것에 관심을 가지게 되었다. -사진을 찍을 때 어떤 렌즈,바디,조명을 사용했는지에 따라 사진을 분류하는 프로그램을 만들려고 한다. -그러는 와중에 사진이 개수가 많아짐에 따라 너무 많은 메모리를 차지해서 문제 생겼다. 3.다이어그램 -PictureFil..

[GoF]10.퍼사드 패턴(Facade Pattern)

1.정의 - 하위 수준의 여러 서브 시스템에서 제공되는 기능들을 상위 수준에서 단순화시켜 사용을 편리하게 만드는 패턴. 2.시나리오 -EH회사는 이번에 사진 모듈을 만들려고 한다. -새 모듈은 기존의 관리 기능과 편집 기능)을 통합한 기능을 넣을려고 한다. => 기존의 관리.,편집기능이 하위시스템 통합한 기능이 상위수준의 시스템 해당. 3.다이어그램 -Picture 클래스는 시스템의 결과물을 나타낸다. -SmartManger 클래스는 상위 시스템 클래스로 하위시스템(PictureManager,Compesator)를 통합한 클래스다. -PictureManager,Compesator 클래스는 하위시스템 클래스들로 여러 기능을 내포한다. 4.구현 1)Picture 클래스 2)Compensator 클래스 3)P..

[GoF]9.장식자 패턴(Decorator Pattern)

1.정의 -기존 클래스에 기능을 추가할 때 유용한 패턴으로 특정 기능을 하는 단위 형식 개체로 정의하여 기능을 추가/삭제를 용이하게 하는 패턴. - 기능을 수행하는 기반 클래스를 작성하고 기능을 수행하는 메서드를 약속한다.. 2.시나리오 -가족은 야구장에 놀러갔다. -아들은 야구장에 수많은 선수의 사진을 찍었다. -그러나 카메라의 설정이 잘못 됐는지 사진의 상태가 좋지 않았다. -아버지는 그런 아들을 위해 사진 자료들을 색 보정,채도 보정.명도 보정(단위 기능)을 하여 사진을 편집했다. 3.다이어그램 -수정하는 기능을 약속한 IChange 인터페이스를 약속한다. -Ichange의 인터페이스에 따라 파생클래스(ToneCompensator, BrightnessCompensator, SaturationComp..

[GoF]8.복합체 패턴(Composite Pattern)

1.정의 -복합체 패턴은 복합 개체와 단일 개체를 같은 방법으로 사용하고자 할 때 사용되는 패턴. -복합체 패턴에서는 단일 개체와 복합 개체를 같은 방법으로 사용할 수 있게 일반화하고 단일 개체 형식과 복합 개체 형식은 파생된 클래스로 구현하여(추상클래스 또는 인터페이스) 기능을 약속함으로써 개체가 단일 개체인지 복합 개체인지를 모르더라도 같은 방법으로 사용할 수 있다. 2.시나리오 -가족들은 매주 주말 여행을 다니면서 사진을 찍었다. -찍은 사진들을 분류할 떄 여행을 다닌 지역단위로 나뉘면 날짜를 보기가 어렵고 그 반대로 분류하면 날짜를 보기 어렵다. 3.다이어 그램 -트리(Tree) 클래스는 경로와 카테고리의 추상클래스로 경로개체와 클래스 개체를 기능과 카테고리 개체로 할 수 있는 기능(View)을 ..

[GoF]7.가교 패턴(Bridge Pattern)

1.정의 -추상적인 개념과 구체적 구현사이에 종속성을 제거하여 목적에 맞게 다양한 구현 방법을 사용하도록 하는 패턴. -ex) 야구하는 학생 => 야구하는 것,학생 피아노 치는 선생 => 선생, 피아노치는 것. - 가교 패턴에서는 추상적 개념과 구체적 구현을 둘 다 기반 클래스와 파생 클래스를 제공하는 형태를 가진다. -그리고 추상적 개념에서 구체적 구현을 하나 멤버로 가진다. -구체적 구현을 개체화 할 수 있어서 파생 클래스가 많아지는 것을 피할 수도 있으며 단위 기능을 추가하거나 변경, 삭제 등의 유지보수 비용을 줄일 수 있게 된다. 2.시나리오 -가족은 카메라와 렌즈를 청소하였다. -아들은 카메라와 렌즈에 써져 있는 AF,MF 등 알파벳이 어떤 의미가 있는지 궁금했다. -아버지는 AF,MF는 자동 ..

[GoF]6.적응자 패턴(Adapter Pattern)

1.정의 -서로 비슷한 기능을 하지만 사용 방법이 다른 경우 같은 인터페이스를 갖게 변환시키는 패턴. -사용자에게 익숙한 인터페이스 형태로 포장하여 제공한다는 의미에서 래퍼(Wrapper)라고도 부른다. 2.시나리오 -EH 카메라 회사는 새로운 영상 처리 모듈을 개발했다. -기존의 카메라의 업그레이드를 통해 그 기능을 제공하고자 하지만 예전 모듈과 기능은 비슷히자만 인터페이스가 달랐다. - 그래서 기존 모듈과 인터페이스가 같은 래퍼를 개발하여 적용할 수 있도록 했다. 3.다이어 그램 -PlmageProcessor클래스는 기존의 카메라 모듈를 구현한 것으로 피사체 설정, 사람에 대한 영상처리 기능.사람 위치를 찾는 기능,이미지를 처리하는 기능 등을 내포하고 있다. -AImageProcessor클래스는 새로..

[GoF]5.단일체 패턴(Singleton Pattern)

1.정의 -특정 형식의 개체가 유일함을 보장하는 패턴. - 일반적으로 데이터들을 관리하고 운용하는 개체를 하나만 두어 관리의 집중화를 통해 유지 보수 비용을 줄이고 높은 신뢰성을 부여할 수 있다. 2.시나리오 -가족들은 여행하면서 사진을 찍었다. -아들은 글자가 중국어로 설정 되어 있어 글자를 한국어 설정으로 바꾸었다. -아버지는 아들에게 카메라가 정보를 어떻게 컨트롤하는지 알려준다. (장치 및 정보를 컨트롤하는 장치는 하나만 존재한다는 것을 알려준다.) 3.다이어 그램 -클래스 구성으로 카메라(단일체), 디스플레이(뷰), 메모리,내부 개체(단일체)로 구성한다. -디스플레이(뷰) 사용자에게 시각적인 상호작용기능을 제공한다. =>저장된 사진을 보거나 내부 설정보는 기능. -메모리카드는 사진을 저장한다. -..

[GoF]4.원형 패턴(ProtoType Pattern)

1.정의 -미리 만들어진 객체를 복사하여 개체를 생성하는 패턴으로 원형 개체는 자신을 복제하는 메서드 정의한다. -클래스의 메서드에서 수행하는 알고리즘에 차이가 없을 때 사용하여 복잡한 일반화 관계를 없애고 단순화. 2.시나리오 -가족들은 여행에서 사용할 줌 렌즈를 하나 구매하려고 한다. -렌즈에는 여러 렌즈가 있고 그 중에 줌 렌즈를 찾고 있다. -웹서핑을 하는 와중에 렌즈가 어떤 원리로 만드는지 궁금해졌다. -아버지는 카메라 회사에 렌즈가 어떻게 생산 되는지 문의를 넣는다. -답변에는 렌즈는 복사기와 비슷한 원리로 만들어진다고 한다. -모든 같은 설비에서 들어가는 공정에도 크게 다르지 않고 생산설비에는 원형 룸 렌즈가 존재한다. => 설비 공정이 알고리즘에 해당,원형 룸 렌즈는 원형 즉 프로토 타입이..

[GoF]3.팩토리 메서드 패턴(Factory Method Pattern)

1.정의 -생성할 개체의 형태가 정형화 되어 있지 않을 떄 생성할 개체에 대한 구체적인 형태를 파생 클래스에서 정의하는 패턴. -뼈대에서 생성할 객체종류를 약속하고 개체 생성 매서드를 정의 -응용을 만들 때 생성할 객체를 구체적으로 구현. 2.시나리오 -아들은 EHCamera회사에 밤문한 이후 사진에 관심이 많아졌다. -그리고 디지털 카메라의 많은 부분이 소프트웨어 기술을 사용한다는 것을 알고 프로그래밍에서 도 관심이 많아졌다. -아들과 아버지는 프로그래밍에 대한 것들을 대화하면서 콘솔 응용의 뼈대를 만들었다. => 추상 응용 클래스에서 추상 뷰 클래스를 만든다. -응용 파생 클래스에서 초기화,런,해제화를 진행하고 뷰 개체를 생성을 약속. -초기화에서는 뷰 개체를 생성하는 메서드를 호출 -런에서는 사용자..

[GoF]2.빌더 패턴(Builder Pattern)

1.정의 -개체 생성 과정은 비슷하지만 세부적인 알고리즘에 차이가 있을 때, 생성과정과 표현 방법을 분리하여 다양한 구성의 인스턴스를 만드는 패턴. -개체를 생성하는 과정을 약속. 2.시나리오 -어떤 가족은 매주 여행을 다닌다 -가족 구성원 중 아들은 카메라와 사진에 호기심이 많아졌다. -아들이 카메라 공정이 궁금해다고 하여 EHCamera 회사에 방문했다. -견학 도중 사진을 찍는 것은 눈으로 보는 원리는 비슷하다는 것을 알게된다. -렌즈나 눈의 원리는 똑같이 빛이 사물에 부딪히는 반사되는 것이 그려지는 것이다. -그리고 렌즈에 따라 이미지 변환 적용이 다를 수 있다(전반적인 개체생성 과정). => 렌즈에 따라 상을 이미지로 바꾸는 알고리즘이 다르다. -렌즈는 인물을 찍을 때와 야간에서 때가 구별된다...