반응형

어댑터 패턴이란, 비슷한 구조의 다른 인터페이스를 가져다 쓸수 있도록 하는 패턴을 말한다.


우리나라의 220V 콘센트를 해외의 110V 콘센트에 연결할 때, 110V 어댑터가 필요하다고 생각하는 것이 편하다.


어댑터 패턴을 사용하는 이유는 기존의 코드와 같은 함수를 만들어야 하지만, 다시 만드는 데에 시간과 비용이 많이 소요될 때 사용한다.


기존의 코드를 사용할 클래스에 적용하는 것이 어댑터 패턴이다.


어댑터 패턴을 사용하는 방법은 두가지가 있다.


첫번째는 클래스 내에 어댑터로 사용할 클래스를 Adaptee로 선언하여 사용하는 방법이다.


Adaptee를 생성자와 함께 할당한 후, 소멸자와 함께 해제하는 방법으로 사용한다.


두번째는 어댑터로 사용할 클래스를 상속받는 방법이다.


어댑터가 필요한 클래스의 상위 클래스와 Adaptee로 사용할 클래스를 다중 상속 받는 방법이다.


public, private 어떤거로 해도 무방하지만, 해당 클래스 이외의 코드에서 사용되지 않도록 private로 선언할 것이다.


아래의 코드에서는 Fireball 클래스는 첫번째 방법, DoubleArrow 클래스는 두번째 방법으로 사용하였다.


Fireball 클래스에서는 Bash 클래스를 Adaptee로, DoubleArrow 클래스에서는 Fireball 클래스를 Adaptee로 사용하였다.



Fireball.h 파일의 Base* base

DoubleArrow.cpp 파일의 Fireball::Throw(attackThrow)


코드가 Adaptee 역할을 하는 코드이다.



반응형

+ Recent posts