其他分享
首页 > 其他分享> > 7.代理模式

7.代理模式

作者:互联网

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;
	}
}

 

 

标签:name,void,girls,代理,模式,girl,public
来源: https://blog.51cto.com/u_12198094/2699997