[디자인 패턴] 2. 프록시 패턴

송송승현's avatar
Nov 12, 2024
[디자인 패턴] 2. 프록시 패턴
 
💡
객체의 대리인 또는 인터페이스 역할을 하는 객체를 통해 실제 객체에 대한 접근을 제한하는 기법.
 

프록시 패턴 적용 전 코드

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

송승현의 블로그