C#/GoF 디자인패턴

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

공부를하자 2023. 9. 23. 18:31

1.정의

-서로 비슷한 기능을 하지만 사용 방법이 다른 경우 같은 인터페이스를 갖게 변환시키는 패턴.

-사용자에게 익숙한 인터페이스 형태로 포장하여 제공한다는 의미에서 래퍼(Wrapper)라고도 부른다.

2.시나리오

-EH 카메라 회사는 새로운 영상 처리 모듈을 개발했다.

-기존의 카메라의 업그레이드를 통해 기능을 제공하고자 하지만 예전 모듈과 기능은

  비슷히자만 인터페이스가 달랐다.

- 그래서 기존 모듈과 인터페이스가 같은 래퍼를 개발하여 적용할 있도록 했다.

3.다이어 그램

-PlmageProcessor클래스는 기존의 카메라 모듈를 구현한 것으로 피사체 설정, 사람에 대한 영상처리 기능.사람 위치를 찾는 기능,이미지를 처리하는 기능 등을 내포하고 있다.

-AImageProcessor클래스는 새로운 모듈로 동물 영상 처리기능을 내포하지만 정의된 인터페이스가 다르기에 바로 적용할 없다.

-WrapAImaegProcessor 클래스는 AImageProcessing 래퍼 역할을 하여 기존 형식에 적용할 있는 적응자 어뎁터 역할을 수행한다.

- IImageProcessing 클래스는 확장성을 높이기 위한 기존 모듈 클래스와 래퍼의 인터페이스로

 ImageProcessing  메서드를 약속한다.

- Camer클래스는 모듈 부분과 사진을 찍는 메서드,모듈 교체 메서드를 구현.

4.구현

1)IImageProcessing 인터페이스

-WrapAImaegProcessor PlmageProcessor클래스의 인터페이스로 사진 생성에 관한 속성과 메서드를 약속한다.

 

2)PlmageProcessor클래스

-사진에 생성에 관한 속성과 사람 이미지를 보정하는 기능을 구현한다.

3)AImageProcessor클래스

-사진에 생성에 관한 속성(PlmageProcessor클래스과 다른 속성) 동물 이미지를 보정하는 기능을 구현한다.

 

4)WrapAImaegProcessor 클래스

-AImageProcessor클래스의 속성을 IImageProcessing 맞게 래핑하는 클래스.

5)Camer클래스

- 모듈 부분과 사진을 찍는 메서드.모듈 교체 메서드을 가진다.

7)테스트