再看设计模式:代理、装饰和适配器
今天再次学习了代理模式,可是现在对于代理模式却有了不同的理解。不同的学习阶段我们对于知识的认识是不一样的,现在再次学习代理模式,跟当初的感觉大相径庭!
下面这段话是我第一次(一年前)学习代理模式时的总结:
代理模式为其他对象提供一种代理以控制对这个对象的访问.实际上我感觉代理模式跟适配器模式相似(一年前这样认为的),都是起到一个中间者的角色.同样代理其实就相当于一个它所代表的实体,只不过使用代理模式,可以隐藏一个对象存在于不同地址空间的事实,可以控制真实对象访问时的权限等等.
这是一年前学习代理模式时对这个模式的总结。其中提到,当初我认为代理模式是和适配器模式相似的,都是可以代替原类实现某些功能或者说在调用原来类的方法。
而根据现在所学习的实例来看,现在的使用场景跟装饰模式更接近。因为我们使用代理模式为类增加了一些内容,那难道不是装饰模式的用途吗?
这是我第一次学习装饰模式时对装饰模式的总结:
装饰模式是动态的给一个对象添加一些额外的职责。也就是说装饰类作用的对象可以是没有装饰过的对象,也可以是已经装饰过的对象。这就意味着同一个接口,可以作用于任意的对象,不管它是否已经被作用过,也就是可以为已有功能动态的添加更多的功能。可以有选择的使用其中的功能,而不是全部都使用。
其实,现在看来,代理模式、适配器模式还有装饰模式,他们确实有很多相似的地方,这些在以前是我没有意识到的。我想,他们既然同属于结构型的模式,那么有相似的地方也是正常的。但是,从刚才的分析看,他们三个比其他的结构型模式确实更“亲近”一点。
但是,不得不说,他们确实是不同的!比如说装饰模式,注重于对对象功能的增加,而代理模式则注重对对象行为的控制。适配器模式更好说,它重点在于给类提供适合的接口。
回头看看,所有的模式都是对设计模式几个原则的实现,只不过不同的模式适合的场景不同,那么他们的侧重点也就不同。所以,有的人会说,只要你按照设计模式的原则去做,那么你不知不觉中就在用设计模式了。
对于设计模式,现在更多的是在学习,而使用的却较少,还需要在以后的学习中多练习!