栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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的功能
	}
}

演示截图

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/736548.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号