设计模式 代理模式

代理模式主要使用了 Java 的多态,主要是接口
干活的是被代理类,代理类主要是接活,

你让我干活,好,我交给幕后的类去干,你满意就成,那怎么知道被代理类能不能干呢?

同根就成,大家知根知底,你能做啥,我能做啥都清楚的很,同一个接口呗。

cpp 复制代码
有一种快乐的女性,你懂的
public interface KindWomen { 
 
	//这种类型的女人能做什么事情呢?
	public void makeEyesWithMan(); //抛媚眼
	 
	 
	public void happyWithMan(); //happy what? You know that!
 
} 

两个这种的人,实现接口

cpp 复制代码
金莲:
public class PanJinLian implements KindWomen { 
	public void happyWithMan() { 
		 System.out.println("潘金莲在和男人做那个....."); 
	 } 
	
	public void makeEyesWithMan() { 
		 System.out.println("潘金莲抛媚眼"); 
	 } 
} 
再定一个丑陋的王婆: 

public class WangPo implements KindWomen { 
	private KindWomen kindWomen; //实际被代理的类
 
	public WangPo(){ //默认的话,是潘金莲的代理
		 this.kindWomen = new PanJinLian(); 
	 } 
 
	//她可以是KindWomen的任何一个女人的代理,只要你是这一类型
	public WangPo(KindWomen kindWomen){ 
		 this.kindWomen = kindWomen; 
	 } 
 
	public void happyWithMan() { 
		 this.kindWomen.happyWithMan(); //自己老了,干不了,可以让年轻的代替
	 } 
	public void makeEyesWithMan() { 
		 this.kindWomen.makeEyesWithMan(); //王婆这么大年龄了,谁看她抛媚眼?!
	 } 
} 
两个女主角都上场了,

大官人:

cpp 复制代码
public class XiMenQing { 
 
/*
 */
public static void main(String[] args) { 
 //把王婆叫出来
 WangPo wangPo = new WangPo(); 
 
 //然后西门庆就说,我要和金莲happy,然后王婆就安排了丢筷子的那出戏:
 wangPo.makeEyesWithMan(); //看到没,虽然表面上时王婆在做,实际上爽的是潘金莲
 wangPo.happyWithMan(); } 
}

另一个女:

cpp 复制代码
public class JiaShi implements KindWomen { 
	public void happyWithMan() { 
		 System.out.println("贾氏正在Happy中......"); 
		 } 
	public void makeEyesWithMan() { 
		 System.out.println("贾氏抛媚眼"); 
	 } 
}
cpp 复制代码
public class XiMenQing { 
 
public static void main(String[] args) { 
 //改编一下历史,贾氏被西门庆勾走:
 JiaShi jiaShi = new JiaShi(); 
 WangPo wangPo = new WangPo(jiaShi); //让王婆作为贾氏的代理人
 
 wangPo.makeEyesWithMan(); 
 wangPo.happyWithMan(); 
 } 
} 
相关推荐
wrx繁星点点2 小时前
状态模式(State Pattern)详解
java·开发语言·ui·设计模式·状态模式
金池尽干4 小时前
设计模式之——观察者模式
观察者模式·设计模式
也无晴也无风雨4 小时前
代码中的设计模式-策略模式
设计模式·bash·策略模式
捕鲸叉13 小时前
MVC(Model-View-Controller)模式概述
开发语言·c++·设计模式
wrx繁星点点13 小时前
享元模式:高效管理共享对象的设计模式
java·开发语言·spring·设计模式·maven·intellij-idea·享元模式
凉辰13 小时前
设计模式 策略模式 场景Vue (技术提升)
vue.js·设计模式·策略模式
菜菜-plus13 小时前
java设计模式之策略模式
java·设计模式·策略模式
暗黑起源喵13 小时前
设计模式-迭代器
设计模式
lexusv8ls600h15 小时前
微服务设计模式 - 网关路由模式(Gateway Routing Pattern)
spring boot·微服务·设计模式
sniper_fandc18 小时前
抽象工厂模式
java·设计模式·抽象工厂模式