Java寒假学习Day20:接口(2):代理模式

本文通过一个明星与经纪人的例子,详细解释了代理模式的概念。代理模式允许经纪人(代理类)处理明星(被代理人)不直接涉及的事务,如商务谈判、规划演出等,同时确保核心业务(如演唱、表演)由明星执行。这种方式保护了明星,对外只通过经纪人进行交互,实现了职责划分和功能扩展。
摘要由CSDN通过智能技术生成

1.代理模式

1.1什么是代理模式?具体示范?

代理模式指的是,以实现同一接口规范的两个类A,类B举例,类A并不需要实现不是一定要类A实现的功能,而交由类B去替类A实现那些功能,只有在涉及到类A需要去自己解决的问题时,才调用类A的重写的一种方法,这种模式可以实现对类A的保护和隐藏。同时类B也可以加一些自己独有的操作。

具体示范:(以明星和经纪人为例)

1.1.1.接口(演艺圈)

package ProxyTest;

public interface Star {
	
	void talk();
	void plan();
	void master();
	
	void sing();
	void jump();
	void rap();
	void playBasketball();
}

1.1.2.被代理人(某明星)

package ProxyTest;

public class Singer implements Star {
	//明星不想干的事
	@Override
	public void talk() {}

	@Override
	public void plan() {}

	@Override
	public void master() {}
	//明星只负责演出
	@Override
	public void sing() {
		System.out.println("明星需要会唱");
	}

	@Override
	public void jump() {
		System.out.println("明星需要会跳");
	}

	@Override
	public void rap() {
		System.out.println("明星需要会rap");
	}

	@Override
	public void playBasketball() {
		System.out.println("明星需要会篮球");
	}

}

1.1.3.某代理人

package ProxyTest;

public class Proxy implements Star {
	//经纪人开代理
	//1.自由经纪人找一个明星(类型的类)
	private Star realStar;
	//2.自由经纪人成为这个明星的代理人
	public Proxy(Star realStar) {
		this.realStar = realStar;
	}
	
	//经纪人能整点自己的花活
		private void earn() {
			System.out.println("经纪人赚了点回扣");
		}
	//经纪人要干的事
	@Override
	public void talk() {
		System.out.println("经纪人去谈生意");
		earn();
	}

	@Override
	public void plan() {
		System.out.println("经纪人去规划演出");
		earn();
	}

	@Override
	public void master() {
		System.out.println("经纪人去营造人设");
		earn();
	}

	
	//经纪人没办法自己做的,才交给歌手
	@Override
	public void sing() {
		realStar.sing();
	}

	@Override
	public void jump() {
		realStar.jump();
	}

	@Override
	public void rap() {
		realStar.rap();
	}

	@Override
	public void playBasketball() {
		realStar.playBasketball();
	}
	
	
	
}

1.1.4.测试演示

package ProxyTest;

public class ProxyTest {
	public static void main(String[] args) {
		
		Singer s = new Singer();
		Proxy p = new Proxy(s);//经纪人p代理了明星s
		//只通过p去调用所有功能,外人只联系经纪人p
		//涉及到s的也让p叫s去做
		p.talk();//p做
		p.plan();//p做
		p.master();//p做
		p.sing();//p让s做
		p.jump();//p让s做
		p.rap();//p让s做
		p.playBasketball();//p让s做
		//这样就让外人不再接触明星s,起到了保护s的功能
	}
}

演示截图

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值