设计模式 代理模式

代理模式主要使用了 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(); 
 } 
} 
相关推荐
老鼠只爱大米6 小时前
Java 设计模式之适配器模式:系统集成的万能接口
java·设计模式·适配器模式·adapter·java设计模式
o0向阳而生0o11 小时前
112、23种设计模式之命令模式(20/23)
设计模式·命令模式
将编程培养成爱好12 小时前
C++ 设计模式《外卖骑手状态系统》
c++·ui·设计模式·状态模式
猿太极12 小时前
设计模式学习(3)-行为型模式
c++·设计模式
快乐非自愿13 小时前
常用设计模式:工厂方法模式
javascript·设计模式·工厂方法模式
guangzan20 小时前
常用设计模式:模板方法模式
设计模式
Lei_3359671 天前
[設計模式]二十三種設計模式
设计模式
吃饺子不吃馅1 天前
面试官:JWT、Cookie、Session、Token有什么区别?
前端·设计模式·面试
leafff1231 天前
一文读懂:如何选择适合的RAG系统架构设计模式?
设计模式·自然语言处理·系统架构
ZHE|张恒1 天前
设计模式实战篇(一):彻底搞懂 Singleton 单例模式
单例模式·设计模式