代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。
代理模式的主要优点有:
• 代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用;
• 代理对象可以扩展目标对象的功能;
• 代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度;
其主要缺点是:
• 在客户端和目标对象之间增加一个代理对象,会造成请求处理速度变慢;
• 增加了系统的复杂度;
class SingleDog {
func eat(){
print("吃吃吃!")
}
}
/// 代理类外卖小哥
class Deliveryman {
func getFood(singleDog:SingleDog){
print("接到订单")
print("前往指定商家")
let restaurant = Restaurant()
restaurant.makeFood()
print("取餐完毕")
print("送到单身狗手上")
singleDog.eat()
}
}
class Restaurant {
func makeFood() {
print("黄焖鸡米饭,沙县小吃,兰州拉面")
}
}
let deliveryman = Deliveryman()
deliveryman.getFood(singleDog: SingleDog())
//接到订单
//前往指定商家
//黄焖鸡米饭,沙县小吃,兰州拉面
//取餐完毕
//送到单身狗手上
//吃吃吃!