1. 程式人生 > >面向物件 介面之代理模式(ProxySubject)

面向物件 介面之代理模式(ProxySubject)


//核心操作  我定義一個介面 讓子類去實現
interface ISubject{
public void get(); 
}
//真實主題操作 作唯一的業務 實現該介面主力
class Student implements ISubject{
@Override
public void get() {
System.out.println("吃藥材");
}
}
//通過工廠模式返回一個真實主體操作核心物件
class Factory {
public static  ISubject getSubject(String className){
if("Student".equals(className)){
return new Student();
}
return null;

}


// 通過第三方平臺代理人幫我去做的事情 
class ProxySubject implements ISubject {
    private ISubject sub;
    public ProxySubject(String className){
    if(sub==null){
   
sub=Factory.getSubject(className);
    }
    }
    //為核心主題前 做準備 
    public  void getYaoCai(){
    System.out.println("準備好靈芝  開始煎藥");
    }
@Override
public void get() {
//準備工作
this.getYaoCai();
//核心工作  代理不知道怎麼做  交給總裁去做
sub.get();
//清理工作
this.getClose();
}
//清理最後一步操作
public void getClose(){
System.out.println("清理所有的沒用的藥材 清理藥碗");
}
}
/**測試類**/
public class MyDemo2 {
public static void main(String[] args) {
ISubject cs=new ProxySubject("Student");
cs.get();//呼叫代理核心主題
}
}