다른 객체에 대한 접근을 제어하는 대리 객체를 제공하는 패턴입니다.
1. 소스 코드
package ch02;
public abstract class Animal {
public abstract String getName();
}
package ch02;
// 고양이
public class Cat extends Animal {
private String name = "고양이";
public String getName() {
return name;
}
}
package ch02;
// 쥐
public class Mouse extends Animal {
private String name = "쥐";
public String getName() {
return name;
}
}
package ch02;
// SRP(Single Responsibility Principle, 단일 책임 원칙)
public class Doorman {
public void 쫓아내(Animal animal) {
System.out.println(animal.getName()+" 쫓아내");
}
}
package ch02;
public class DoormanProxy {
private Doorman doorman;
public DoormanProxy(Doorman doorman) {
this.doorman = doorman;
}
public void 쫓아내(Animal animal) {
System.out.println("안녕");
doorman.쫓아내(animal);
}
}
package ch02;
// main
public class App {
public static void main(String[] args) {
Doorman doorman = new Doorman();
// 의존성 주입(매개변수로 Doorman을 받는다)
DoormanProxy doormanProxy = new DoormanProxy(doorman);
Cat cat = new Cat();
Mouse mouse = new Mouse();
doormanProxy.쫓아내(cat);
doormanProxy.쫓아내(mouse);
}
}
2. 대리인 DoormanProxy 객체
- 매개변수로 Doorman 객체를 받습니다. (의존성)
- Doorman 대신 cat과 mouse를 쫓아냅니다.
Share article