版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/as15932641664/article/details/81941202
情景一:“喂喂喂,你是XXX代驾公司吗?我在XXXX,我喝多了开不了车,快来吧”
情景二:“在吗,曹哥,听说您最近去巴黎了,巴黎的香水非常有名,您帮我带点回来吧,嘿嘿嘿!”
大家看到上面的两个情景是不是非常熟悉呢?它们就发生在我们身边,我们都遇见过或者都经历过类似于上面的两个情景。想的没错,我要说的就是代理模式
上面两个故事中的访问对象分别是“汽车”,“香水”。由于车主喝多了,无法直接访问对象;由于不在巴黎,无法直接访问对象,所以情景一和二都有一个共同的特点,就是加入了“第三者”,一加入了代驾司机,二加入了代购者(曹哥)。这就是代理模式,用代驾司机和代购者来帮助他们实现功能。
代理模式:为其他对象提供一种代理以控制对这个对象的访问
为别人做嫁衣
《哆啦A梦》中,大雄喜欢静香,一直想给静香送鲜花、送巧克力、送毛绒玩具(这些属于大雄的行为)但他却羞涩涩的。大雄就利用哆啦A梦的任意门找到了小智,让他把东西送给静香(小智就是代理,大雄的行为小智自然也会有了)。小智说“好啊”,于是小智每隔一天就会给静香送礼物,并告知这是大雄给你的。终于,皇天不负有心人,静香与小智发展成了男女朋友(此时大雄已哭晕在厕所)
代理模式是常用的结构型设计模式之一,当无法直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问。上面的大雄对访问对象“静香”就是无法直接访问,所以他找到了一个代理“小智”。
代理模式也可以说是在访问对象时引入一定程度的间接性
结构图