静态代理
    可以理解为静态店 只能卖苹果手机 不能卖其他的手机

    顶级接口
    一个类工厂(真实)
    一个类代理(假的)存储一个真实类的对象作为属性
    用户和真实类之间 隔了一层 在用户不知情的情况下 修改真实的执行—-偷梁换柱
    静态代理.png
    接口:定义规则
    Store商店接口:

    1. public interface Store {
    2. public Phone selliPhone();
    3. }

    Phone手机接口:

    1. public interface Phone {
    2. public void call();
    3. public void play();
    4. public void photo();
    5. }

    苹果商店:

    1. /**
    2. * 这是苹果专卖店
    3. * 可以理解为手机的生产工厂
    4. * 用来生产手机 卖手机
    5. */
    6. public class AppleStore implements Store{
    7. //这是一个工厂店 ----- 手机 关系 依赖
    8. //即 一个类的方法中使用到了另一个类的对象
    9. //生产真机
    10. private iPhone productPhone(){
    11. //创建手机
    12. iPhone iPhone = new iPhone("iPhone7","black");
    13. //将生产的手机返回
    14. return iPhone;
    15. }
    16. //卖真机
    17. public iPhone selliPhone() {
    18. //卖出去工厂生产的手机
    19. return this.productPhone();
    20. }
    21. }

    真的iPhone手机:

    1. public class iPhone implements Phone{
    2. //这是真的iPhone手机
    3. private String name;
    4. private String color;
    5. public iPhone(){}
    6. public iPhone(String name,String color){
    7. this.name = name;
    8. this.color = color;
    9. }
    10. public String getName() {
    11. return name;
    12. }
    13. public String getColor() {
    14. return color;
    15. }
    16. public void setName(String name) {
    17. this.name = name;
    18. }
    19. public void setColor(String color) {
    20. this.color = color;
    21. }
    22. public void call() {
    23. System.out.println("真的iPhone手机 打电话很流畅");
    24. }
    25. public void play() {
    26. System.out.println("真的iPhone手机 玩游戏不卡顿");
    27. }
    28. public void photo() {
    29. System.out.println("真的iPhone手机 拍照片很清晰");
    30. }
    31. }

    假的lPhone手机:

    1. public class lPhone implements Phone{
    2. //假手机要想以假乱真 那么iPhone有什么功能 lPhone也要有相同的功能
    3. //将这些功能提出来作为规则(接口)
    4. //只要实现了接口 就可以让用户难以分辨是真机还是假机
    5. public void call() {
    6. System.out.println("假的lPhone手机 打电话不流畅");
    7. }
    8. public void play() {
    9. System.out.println("假的lPhone手机 玩游戏很烫手");
    10. }
    11. public void photo() {
    12. System.out.println("假的lPhone手机 拍照片不清晰");
    13. }
    14. }

    代理商店:

    1. /**
    2. * 代理商 相当于中间商
    3. */
    4. public class ProxyStore implements Store{
    5. //要想卖真机 那么需要有苹果工厂 才能源源不断的获得真机
    6. //属性
    7. private AppleStore store = new AppleStore();
    8. //通过卖真手机 得到了很多客源 为了获取更多利润 代理商想造假 卖假手机
    9. private lPhone productlPhone(){
    10. lPhone lPhone = new lPhone();
    11. return lPhone;
    12. }
    13. //代购 卖手机
    14. //将代理商店做的和真的苹果商店一样(以假乱真 即方法和苹果商店的sellPhone方法一样)
    15. public Phone selliPhone() {
    16. //1 有一台真机
    17. Phone iPhone = this.store.selliPhone();
    18. //2 有一台假机
    19. Phone lPhone = this.productlPhone();
    20. //将手机卖出 看心情卖真手机还是假手机
    21. //卖假手机
    22. return lPhone;
    23. }
    24. }

    用户:

    1. public static void main(String[] args){
    2. //1 有一个苹果工厂店
    3. // AppleStore as = new AppleStore();
    4. // iPhone iPhone = as.selliPhone();
    5. // iPhone.call();
    6. // iPhone.play();
    7. // iPhone.photo();
    8. //2 有一个代理店
    9. //代理店中除了new对象时不一样 其他的方法、功能都和苹果的一样
    10. //那么用户就无法分清到底得到的是真机还是假机
    11. ProxyStore ps = new ProxyStore();
    12. Phone iPhone = ps.selliPhone();
    13. iPhone.call();
    14. iPhone.play();
    15. iPhone.photo();
    16. }