객체의 대리인 또는 인터페이스 역할을 하는 객체를 통해 실제 객체에 대한 접근을 제한하는 기법.
프록시 패턴 적용 전 코드
abstract class Animal {
abstract String getName();
}
public class Mouse extends Animal {
String name = "쥐";
public String getName(){
return name;
}
}
public class Cat extends Animal {
String name = "고양이";
public String getName(){
return name;
}
}
//SRP -> Single Responsibility Principal
public class Doorman {
public void 쫒아내(Animal animal){
//DIP -> Dependency Inversion Principle
System.out.println(animal.getName()+" 쫓아내");
}
}
public class App {
public static void main(String[] args) {
Doorman doorman = new Doorman();
Mouse mouse = new Mouse();
Cat cat = new Cat();
doorman.쫒아내(mouse);
doorman.쫒아내(cat);
}
}
프록시 패턴 적용 후 코드
abstract class Animal {
abstract String getName();
}
public class Mouse extends Animal {
String name = "쥐";
public String getName(){
return name;
}
}
public class Cat extends Animal {
String name = "고양이";
public String getName(){
return name;
}
}
public class Doorman {
public void 쫒아내(Animal animal){
System.out.println(animal.getName()+" 쫓아내");
}
}
public class DoormanProxy {
private Doorman doorman;
public DoormanProxy(Doorman doorman){
this.doorman = doorman;
}
public void 쫒아내(Animal animal){
hello();
doorman.쫒아내(animal);
}
private void hello(){
System.out.println("안녕");
}
}
public class App {
public static void main(String[] args) {
Doorman doorman = new Doorman();
DoormanProxy doormanProxy = new DoormanProxy(doorman);
Mouse mouse = new Mouse();
Cat cat = new Cat();
doormanProxy.쫒아내(mouse);
doormanProxy.쫒아내(cat);
}
}
Share article