仓颉的设计模式--代理模式
以喝酒为例,代理模式就是有一个间接对象来代替你执行喝酒这个操作,你说你可以喝那不算,我说你需要满足年龄大于18这个条件才能喝,那我就是这个间接对象。Drinker和它的代理DrinkerInBar都继承CanDrink,对抽象方法drink()进行相应的实现。DrinkerInBar的代理加强了对张三喝酒行为的控制。
·
以喝水为例,代理模式就是有一个间接对象来代替你执行喝水这个操作,你说你可以喝那不算,我说你需要满足年龄大于18这个条件才能喝,那我就是这个间接对象。
// 代理模式
public abstract class CanDrink{
public func drink(): Unit
}
public class Drinker <: CanDrink{
var age: Int16
public Drinker(age: Int16){
this.age = age
}
// 自己喝,无条件
public func drink(){
println("喝水")
}
}
public class DrinkerInBar <: CanDrink{
var drinker: Drinker
public DrinkerInBar(drinker: Drinker){
this.drinker = drinker
}
// 在水吧,年龄大于18才能喝
public func drink(){
println("来到水吧")
if(drinker.age > 18){
drinker.drink()
}
else {
println("未成年不可以喝水")
}
}
}
Drinker和它的代理DrinkerInBar都继承CanDrink,对抽象方法drink()进行相应的实现。
// 张三是个17岁的水客
var zhangsan: Drinker = Drinker(17)
// 张三自己喝,OK
zhangsan.drink()
// 张三去水吧,登记为zs
var zs: DrinkerInBar = DrinkerInBar(zhangsan)
// 张三不能在水吧喝水因为水吧有规定
zs.drink()

DrinkerInBar的代理加强了对张三喝水行为的控制
更多推荐



所有评论(0)