`
zhangweieye
  • 浏览: 9951 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论
文章列表
1.1概述     保证一个类仅有一个实例,并提供一个访问它的全局访问点。这就是单件模式的定义。     在某些情况下,我们可能需要某个类只能创建一个对象,即不让用户用该类实例化出多于两个的实例。   例如,在一个公文管理系统中,公文类的实例“公文文件”,需要将公章类的实例作为自己的一个成员,以表明自己是一个有效的公文文件,那么系统的设计者就需要保证公章类只有一个实例,不能允许用户使用公章类的构造方法再创建出第2个实例。   单件模式是关于怎样设计一个类,并使该类只有一个实例的成熟模式,该模式的关键是将类的构造方法设置为private
1.1概述     提供一个创建一系列或相互依赖对象的接口,而无须指定他们具体的类。这就是抽象工厂模式的定义。   设计某些系统时可能需要为用户提供一系列相关的对象,但系统不希望用户直接使用new运算符实例化这些对象,而是应当由系统来控制这些对象的创建,否则用户不仅要清楚地知道使用哪些类来创建这些对象,而且还必须要清楚对象之间是如何关联的,使得用户的代码和这些类形成紧耦合、缺乏弹性、不利于维护。       
1.1概述     将一个复杂对象的构建与它的表示分离,使同样的构建过程可以创建不同的表示。这就是生产器模式的定义。   如果一个类中有若干个成员变量是其他类声明的对象,那么该类创建的对象就可以包含若干个其他对 ...
1.1概述     为系统中的一组接口提供一个一致的界面,Facade(外观)模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。     外观模式是简化用户和子系统进行交互的成熟模式,外观模式的关键是为子系统提供一个称作外观的类。该外观类的实例负责和子系统中的类的实例打交道。当用户想要和子系统中的若干个类的实例打交道时,可以代替地和子系统的外观类的实例打交道。   1.2模式的结构 外观模式的结构中包括两种角色:
1.1概述     使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。这就是责任链模式。     责任链模式是使用多个 ...
1.1概述   定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。这就是工厂方法模式的定义。   得到一个类的子类的实例最常用的办法就是使用new运算符和该子类的构造方法,但是在某些情况下,用户可能不应该或无法使用这种办法来得到一个子类的实例,其原因是系统不允许用户代码和该类的子类形成耦合或者用户不知道该类有哪些子类可用。   例如,有一个笔芯类(PenCore),该类是一个抽象类。假设笔芯类有三个子类,分别是红笔芯类(RedPenCore
1.1概述     用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。这就是中介者模式的定义。     一个对象含有另一个对象的引用是面向对象中经常使用的方式,也是面向对象所提倡的,即少用继承多用组合。但是怎样合理地组合对象对系统今后的扩展、维护和对象的复用是至关重要的,这也正是学习设计模式的重要原因。     例如,在一个房屋租赁系统中,有很多对象,有些对象是求租者,有些是出租者,如果要求他们之间必须成为朋友才能进行有关租赁的操作,显然不利于系统的维护和发展,因此,每当有新的出租者或求租者加入该系统,这个新的 ...
1.1概述     提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露对象的内部表示。这就是迭代器模式的定义。     合理组织数据的结构以及相关操作是程序设计的一个重要方面,比如在程序设计中经常会使用诸如链表、散列表等数据结构。链表和散列表等数据结构都是可以存放若干个对象的集合,其区别是按照不同的方式进行存储对象。我们希望无论何种集合,应当允许程序以一种统一的方式遍历集合中的对象,而不需要知道这些对象在集合中是如何表达及存储的。   例如,一栋楼中居住着张三、李四、王五三个人,分别被安排在不同的房间,张三知道李四的房间,李四知道王五的房间。假如有一个警察,他并不知道他们三个 ...
1.1概述      方法是类中最重要的组成部分,一个方法的方法体由一系列语句构成,也就是说一个方法的方法体是一个算法。在某些设计中,一个类的设计人员经常可能涉及这样的问题:由于用户需求的变化,导致经常需要修改类中某个方法的方法体,即需要不断地变化算法。在这样的情况下可以考虑使用策略模式。     策略模式是处理算法不同变体的一种成熟模式,策略模式通过接口或抽象类封装算法的标识,即在接口中定义一个抽象方法,实现该接口的类将实现接口中的抽象方法。策略模式把针对一个算法标识的一系列具体算法分别封装在不同的类中,使得各个类给出的具体算法可以相互替换。     在策略模式中,封装算法标识的接口称 ...
1.1概述     在实际生活中有很多和适配器类似的问题,比如有A型螺母和B型螺母,那么用户可以在A型螺母上直接使用按着A型螺母标准生产的A型螺丝,同样用户可以在B型螺母上直接使用按着B型螺母标准生产的B型螺丝。但是由 ...
1.1概述     在许多设计中,经常涉及到一个对象请求另一个对象调用其方法达到某种目的。如果请求者不希望或无法直接和被请求者打交道,即不希望或无法含有被请求者的引用,那么就可以使用命令模式。     例如,在军队作战中,指挥官请求三连偷袭敌人,但是指挥官不希望或无法直接与三连取得联系,那么可以将该请求:“三连偷袭敌人”形成一个“作战命令”,该作战命名的核心就是“三连偷袭敌人”。只要能让该“作战命令”被执行,就会实现偷袭敌人的目的。     命令模式的核心就是使用命令对象来封装方法调用,即将请求者的请求:“接收者调用方法”封装到命令对象的一个方法中,这样一来,当一个对象请求另一个对象调用 ...
1.1概述     在许多设计中,可能需要改进类的某个对象的功能,而不是该类创建的全部对象,在这样的情况下,就可以使用装饰模式。     例如,麻雀类的实例(麻雀)能够连续飞行100米,如果用麻雀类创建了5只麻雀,那么这5只麻雀都能连续飞行100米。假如想让其中一只麻雀能够连续飞行150米,那应当怎样做呢?一种比较好的办法就是给麻雀装上智能电子翅膀,智能电子翅膀可以使得麻雀不使用自己的翅膀就能飞行50米。     装饰模式是动态地扩展一个对象的功能,而不需要改变原始类代码的一种成熟模式。在装饰模式中,“具体组件”类和“具体装饰”类是该模式中最重要的两个角色。“具体组件”类的实例称作“被装 ...
1.1概述     在许多设计中,经常涉及多个对象都对一个特殊对象中的数据变化感兴趣,而且这多个对象都希望跟踪那个特殊对象中的数据变化,在这样的情况下就可以使用观察者模式。     例如,某些寻找工作的人对“求职中心”的职业需求信息的变化非常关心,很想追踪“求职中心”中职业需求信息的变化。一位想知道“求职中心”职业需求信息变化的人需要成为“求职中心”的求职者,即让求职中心把自己登记到求职中心的“求职者”列表中,当一个人成为求职中心的求职者后,求职中心就会及时通知他最新的职业需求信息。     观察者模式是关于多个对象想知道一个对象中数据变化情况的一种成熟的模式。观察者模式中有一个称作“主 ...
Global site tag (gtag.js) - Google Analytics