设计模式 代理模式

代理模式主要使用了 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·设计模式·访问者模式
hqxstudying9 小时前
Java创建型模式---单例模式
java·数据结构·设计模式·代码规范
花好月圆春祺夏安10 小时前
基于odoo17的设计模式详解---装饰模式
数据库·python·设计模式
fie888910 小时前
浅谈几种js设计模式
开发语言·javascript·设计模式
哆啦A梦的口袋呀10 小时前
《深入设计模式》模式结构汇总
设计模式
花好月圆春祺夏安10 小时前
基于odoo17的设计模式详解---单例模式
单例模式·设计模式
在未来等你13 小时前
设计模式精讲 Day 22:模板方法模式(Template Method Pattern)
设计模式·模板方法模式·软件架构·java开发·面向对象设计·设计模式实战·java应用开发
花好月圆春祺夏安14 小时前
基于odoo17的设计模式详解---代理模式
设计模式·代理模式
Small black human1 天前
设计模式-应用分层
设计模式
码农秋1 天前
设计模式系列(10):结构型模式 - 桥接模式(Bridge)
设计模式·桥接模式