안녕하세요 알통몬입니다. 공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
먼저 어댑터 패턴이 활용되지 않은 예제입니다.
예제)
ServiceA.java
package adapterPattern;
public class ServiceA {
void runServiceA() {
System.out.println("ServiceA");
}
}
ServiceB.java
package adapterPattern;
public class ServiceB {
void runServiceB() {
System.out.println("ServiceB");
}
}
ClientWithNoAdapter.java
package adapterPattern;
public class ClientWithNoAdapter {
public static void main(String[] args) {
ServiceA sa1 = new ServiceA();
ServiceB sb1 = new ServiceB();
sa1.runServiceA();
sb1.runServiceB();
}
}
main()메서드를 보면 sa1 참조변수와 sb1 참조변수를 통해 호출하는
각 메서드가 비슷한 일을 하지만 메서드 명이 다른 것을 볼 수 있습니다.
그렇다면 어댑터 패턴을 적용한 예제를 보겠습니다.
기존의 ServiceA.java 와 ServiceB.java는 그대로 사용합니다.
예제)
AdapterServicA.java
package adapterPattern;
public class AdapterServicA {
ServiceA sa1 = new ServiceA();
void runService() {
sa1.runServiceA();
}
}
AdapterServicB.java
package adapterPattern;
public class AdapterServicB {
ServiceB sb1 = new ServiceB();
void runService() {
sb1.runServiceB();
}
}
ClientWithAdapter.java
package adapterPattern;
public class ClientWithAdapter {
public static void main(String[] args) {
AdapterServicA asa1 = new AdapterServicA();
AdapterServicB asb1 = new AdapterServicB();
asa1.runService();
asb1.runService();
}
}
AdapterServicA.java
AdapterServicB.java는 기존의 ServiceA 와 ServiceB의 메서드를
service()라고 하는 같은 이름의 메서드로 호출해서 사용할 수 있게 해주는 변환기 입니다.
ClientWithAdapter가 변화기를 통해 service()라는 동일한 메서드 명으로 두 객체의 메서드를 호출합니다.
어댑터 패턴은 합성, 객체를 속성으로 만들어서 참조하는 디자인 패턴이에요.
한마디로 호출당하는 쪽의 메서드를 호출하는 쪽의 코드에 대응하도록
중간에 변환기를 통해 호출하는 패턴입니다.
'개발 etc' 카테고리의 다른 글
JAVA 자바 데코레이터 패턴(Decorator Pattern) (0) | 2017.03.12 |
---|---|
JAVA 자바 프록시 패턴(Proxy Pattern) (0) | 2017.03.12 |
JAVA 자바 디자인 패턴 (0) | 2017.03.12 |
JAVA 자바 객체 지향 설계 5원칙 SOLID(5) - DIP 의존 역전 원칙 (0) | 2017.03.12 |
JAVA 자바 객체 지향 설계 5원칙 SOLID ISP 인터페이스 분리 원칙 (0) | 2017.03.12 |