/*接口设计模式:代理设计模式(Proxy)
所谓的代理严格来讲就是 :两个子类共同实现一个接口,其中一个子类负责真实的业务实现,而另外的子类负责辅助真实业务主体的操作* /
//需求:我现在核心功能是 吃饭
一个负责真实业务的类 RealEat 方法 eat()void
一个负责辅助真实业务主体的类 Proxy :
|-吃饭得先找到一家饭馆 find()void
|-然后吃饭(此处的吃饭就是真是业务的功能)
|-吃完饭付钱走人 pay()void
interface ISubject{//定义核心目标
public void eat();//抽象方法,接口的abstract可省略。 抽象方法中不能省略
}
class RealEat implements ISubject{
public void eat(){
syso"只管吃就行了"}
}
class ProxyEat implements ISubject{
public ISubject isubject;
public ProxyEat ( ISubject isubject){
this.isubject=isubject;
}
public void find(){syso"找附近的饭馆"};
public void pay(){syso"付钱走人"}
//因为辅助类实现了父接口所以要覆写方法
public void eat(){
在方法中进行我们系统操作
this.find();
//此时是只管吃就行 但是该方法是外部类所以要封装一个该方法的父接口对象或者子类对象
this.isubject.eat();
this.pay();
}
}
class Factory{
public static ISubject getInstance(){
return new ProxyEat(new RealEat());
}
}
public class TestDemo{
public static void main(String args[ ]){
ISubject it=Factroy.getInstance;//但是此时有2个new 很变扭 我们通过工厂类来改善这一缺陷
}
}
网友评论