静态代理模式

依赖关系的体现,一个类的方法使用到了另一个类的对象(传参数 方法内创建)。
依赖方法,聚合属性。
写方法之前要想清楚,该方法需要什么要求才可以执行(参数),该方法执行后的结果(返回值)怎么处理。

代理模式的好处:

1.如果能实现,用户只能从代理获取类。
2.用户不知情的情况下使用代理可以修改真实类执行。
3.目的 对核心功能函数的保护,防止核心代码过于复杂。
静态代理——-代理对象
动态代理——-代理方法

代码部分:

![L{SU0IG(CCKV5~Z808FK5G.png
package staticproxy;

/**

  • 手机接口,用来定义手机规则
    */
    public interface Phone {
    public abstract void call();
    public abstract void play();
    public abstract void photo();
    }
  • package staticproxy;

/**

  • 商店接口,用来定义代理规则
    */
    public interface Store {
    public abstract Phone SellPhone();
    }
  • package staticproxy;

/**

  • 这个类是手机制造工厂
    */
    public class AppleStore implements Store{
    // 生产手机
    private iPhone createiPhone(){
    iPhone iphone = new iPhone();
    return iphone;
    }
    public Phone SellPhone() {
    return this.createiPhone();
    }
    }
  • package staticproxy;

/**

  • 这个是代理商店
    */

public class ProxyStore implements Store{
//依赖 has a
private AppleStore store = new AppleStore();

  1. public Phone SellPhone(){
  2. //真的手机

// Phone iphone = store.createiPhone();
//假的手机
Phone iphone = this.createiPhone();
return iphone;
}
//假手机工厂
private Phone createiPhone(){
Phone iphone = new Lphone();
return iphone;
}
}
package staticproxy;

public class iPhone implements Phone{
public void call(){
System.out.println(“真iphonem 打电话信号很好”);
}
public void play(){
System.out.println(“真iphone 玩游戏很流畅”);
}
public void photo(){
System.out.println(“真的iphone 拍照很清晰”);
}

}
package staticproxy;

public class Lphone implements Phone{
public void call(){
System.out.println(“假iphone 打电话信号不好”);
}
public void play(){
System.out.println(“假iphone 玩游戏很烫手”);
}
public void photo(){
System.out.println(“假的iphone 拍照很模糊”);
}
}
package staticproxy;

public class TestMain {
public static void main(String args[]){
// 设计模式
// 面向对象的编程思想
// 类和类之间的关系
// is a
// has a
// use a need a
Store store = new ProxyStore();
Phone phone = store.SellPhone();
phone.call();
phone.photo();
phone.play();
}
}
总结:现在认为静态代理就是用接口实现多态,让用户体验更好,保护核心代码。