大话设计模式java版本 第七章 代理模式

package staticProxy;

interface IGiveGift {
    abstract void GieveDolls();
    abstract void GiveFlowers();
}
package staticProxy;

public class Girl {
    private String name;
    private int age;
    public Girl(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    };

}
package staticProxy;

public class Pursuit implements IGiveGift {
    private String name;
    private Girl mm;



    public Pursuit(String name, Girl mm) {
        super();
        this.name = name;
        this.mm = mm;
    }

    @Override
    public void GieveDolls() {
        System.out.println("送你洋娃娃");

    }

    @Override
    public void GiveFlowers() {
        System.out.println("送你鲜花");

    }

}
package staticProxy;

public class Proxy implements IGiveGift {

    private Girl mm;
    private Pursuit pursuit;


    public Proxy(Girl mm, Pursuit pursuit) {
        super();
        this.mm = mm;
        this.pursuit = pursuit;
    }

    @Override
    public void GieveDolls() {
        pursuit.GieveDolls();

    }

    @Override
    public void GiveFlowers() {
        pursuit.GiveFlowers();

    }

}
package staticProxy;

public class test {
    public static void main(String[] args) {
        Girl mm = new Girl("Mary", 6);
        Pursuit pursuit = new Pursuit("追求者", mm);
        Proxy proxy = new Proxy(mm, pursuit);

        proxy.GieveDolls();
        proxy.GiveFlowers();
    }
}   

感觉静态代理模式和装饰模式好像。网上查了查两者的区别:

  • 在代码执行过程中,代理模式是操作的proxy代理类,而装饰模式操作的是原始类。
  • 代理模式可以隐藏代理对象,而装饰模式则是执行者本身。
  • 装饰模式主要强调的是功能扩展,而代理模式主要强调控制访问;如果对象运行完方法没有改变则是代理模式;如果方法改变则是装饰模式。

你可能感兴趣的:(java,设计模式)