设计模式之代理模式学习二----普通代理----------《设计模式之禅》学习笔记

接着上一篇的代理,现在开始普通代理。

普通代理:普通代理要求场景类中不能出现真实角色,即通过代理角色来访问。其实就是把上一篇中的场景类中new PrimaryStudent() 放到了代理类中。

修改下PrimaryStudent:

package test;

public class PrimaryStudent implements Student {
	
	private String name ;
	
	public PrimaryStudent(Student _student,String name) throws Exception {
		if(_student == null) {
			throw new Exception("不能创建PrimaryStudent");
		} else {
			this.name = name;
		}
	}
	
	@Override 
	public void doHomeWork() {
		System.out.println("小学生 "+name+" 在做作业");
		
	}

}

修改后的代理类:

package test;

//代理类来代替小学生做作业

public class HomeWorkProxy implements Student{
	private Student student = null;
	
	public HomeWorkProxy(String name) {
		try {
			student = new PrimaryStudent(this,name);
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	@Override
	public void doHomeWork() {
		student.doHomeWork();
		
	}

}

修改后的场景类:

package test;

public class Client {
	public static void main(String[] agrs) {
		Student homeWorkProxy = new HomeWorkProxy("小明");
		homeWorkProxy.doHomeWork();
	}
}

场景类中没有直接new PrimaryStudent 通过代理类进行的操作、。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值