随笔分类 - 设计模式
与设计模式相关的内容
摘要:本节从以下几个方面来详细讲解代理模式:代理模式的核心思想。何时使用代理模式。Java中的应用-Java动态代理机制。12.3.1 代理模式的核心思想代理模式就是给某一个对象提供一个代理对象,并由代理对象控制对源对象的引用。就是一个人或者一个机构代替另一个人或者另一个机构去采取一些行动。代理模式中的代理者就好比中介机构,它提供了对被代理对象的一切事物。代理模式与适配器模式和装饰器模式相似,它们之间的区别是:适配器模式是将一个类A转换成另一个类B。装饰器模式是为一个类A增加新的功能,从而变成类B。代理模式是为一个类A转换操作类B。它们三者的限制条件层层递进,递进关系如图12-16所示。代理模式中的
阅读全文
摘要:在对已有的方法进行使用的时候需要对原有方法进行改进或者修改,这时候有两种改进选择:修改原有方法来适应现在的使用方式,或者使用一个"第三者"方法来调用原有的方法,并且对方法产生的结果进行一定的控制。第一种方法明显违背了"对扩展开放、对修改关闭"的开闭原则,而且在原有方法中进行修改可能使得原来类的功能变得模糊和多元化,而使用第二种方式可以将功能划分得更加清晰,有助于后面的维护。所以在一定程度上第二种方式是一个比较好的选择!这就是代理模式。如果按照使用目的来划分,代理有以下几种。远程(Remote)代理:为一个位于不同的地址空间的对象提供一个局域代表对象。这个
阅读全文
摘要:刚在51CTO.COM看到一篇讲观察者模式的文章,感觉上面的图示很生动,于是就转了过来,图示出自:http://lavasoft.blog.51cto.com/62575/201617图1:用户订阅气象信息的服务图2:用户得到气象信息图3:观察者模式类图图4:观察者信息展示类图
阅读全文
摘要:C++编程语言是一个应用广泛的计算机应用语言,它功能强大,在一定程度上大大提高了程序开发效率。C++单例模式也称为单件模式、单子模式。使用单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出等。单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做到这一点,但这样的代码显得很不优雅。定义一个单例类,使用类的私有静态指针变量指向类的唯一实例,并用一个公有静态方法获取该实例。如下面的类定义:class CSingleton:{ // 其它成员public: static CSingleton * Get
阅读全文
摘要:1. 单例的目的是什么? 这个应该很明显,保证一个类只有单一的实例,也就是说你无法通过New或CreateInstance来创建这个类的一个新实例。2. 单例的好处在哪里? 当一个对象在程序内部只能有一个实例的时候,它可以保证我们不会重复创建,而是始终指向同一个对象。3. 怎么用?单例模式的实现代码如下: namespace SinglePattern{ public class SingleClass { private static SingleClass instance; protected SingleClass(){} public static SingleClass GetIn
阅读全文
摘要:下面从以下几个方面来详细讲解外观模式:外观模式的核心思想。何时使用外观模式。Java中的应用。在真实的应用系统中,一个子系统可能由很多类组成。子系统的客户为了满足它们的需要,需要和子系统中的一些类进行交互。客户和子系统的类进行直接的交互会导致客户端对象和子系统之间高度耦合。如图12-18所示,X和Y对子系统内A、B和C都有调用,它们之间是高度耦合。外观模式为子系统提供了一个更高层次、更简单的接口,从而降低了子系统的复杂度和依赖,这使得子系统更易于使用和管理。外观是一个能为子系统和客户提供简单接口的类。当正确地应用外观时,客户不再直接与子系统中的类交互,而是与外观交互。外观承担与子系统中类交互的
阅读全文