package proxyPattern; import sun.net.www.content.image.gif; /** * 普通实现方式 * * 场景: tom 认识 dany dany认识莉莉 但是tom不认识莉莉 但是 但是 tom想追莉莉 就想送莉莉礼物 * * @author LiMing E-mail:1151143484@qq.com * @date 2017年6月11日 下午7:44:03 */ public class Commonly { public static void main(String[] args) { Girl girl = new Girl("莉莉"); Pursuit tom = new Pursuit(girl); //这里是有问题的 tom不认识莉莉 不能直接接触的 //送玫瑰 tom.giveRose(); // } } // 帅哥 class Pursuit { Girl girl; public Pursuit(Girl girl) { this.girl = girl; } public void giveRose(){ System.out.println("送 "+girl.name+" 玫瑰"); } public void giveLollipop(){ System.out.println("送 "+girl.name+" 棒棒糖"); } } // 菇凉 class Girl { String name; public Girl() { } public Girl(String name) { this.name = name; } }
package proxyPattern; /** * 代理模式 代理模式:为其他对象提供一种代理以控制对这个对象的访问 * * * 远程代理: * 为了一个对象在不同的地址空间提供局部代表 。 这样可以隐藏一个对象存在于不同地址空间的事实 (webService ) * 远程代理为一个位于不同的地址空间的对象提供一个局域代表对象,这个不同的地址空间可以是在本机器中, * 也可以是在另一台机器中,远程代理还有个酷炫的名字:大使。 * 本地应用-》本地代理-》服务端代理-》远程服务 * * 虚拟代理: * 根据需要创建开销很大的对象。通过她来存放实例化需要很长时间的真是对象(比如网页加载图片的时候用一个对象存储图片的地址和名称 但是不及时加载图片) * * 安全代理: * 用来控制真是对象访问时的权限 (对象的访问权限不同) * * 智能代理: * 智能指引 是指当调用真实的对象时 代理处理另外一些事 * * 其他xx代理 欢迎补充 和指正 * @author LiMing E-mail:1151143484@qq.com * @date 2017年6月11日 下午7:43:35 */ public class ProxyPattern { public static void main(String[] args) { Girls girls = new Girls("莉莉"); //tom Pursuits pursuits = new Pursuits(girls); //dany Proxy proxy = new Proxy(pursuits); //送棒棒糖 proxy.giveLollipops(); } } // 送礼物接口 interface IGiveGift { abstract public void giveRoses(); abstract public void giveLollipops(); } class Pursuits implements IGiveGift { Girls girls; public Pursuits(Girls girls) { this.girls = girls; } public void giveRoses() { System.out.println("送 " + girls.name + " 玫瑰"); } public void giveLollipops() { System.out.println("送 " + girls.name + " 棒棒糖"); } } // 代理类 class Proxy implements IGiveGift { Pursuits pursuits; public Proxy() { } public Proxy(Pursuits pursuits) { this.pursuits = pursuits; } public void giveRoses() { pursuits.giveRoses(); } public void giveLollipops() { pursuits.giveLollipops(); } } // 菇凉 class Girls { String name; public Girls() { } public Girls(String name) { this.name = name; } }