posts - 0, comments - 0, trackbacks - 0, articles - 3

一、设计模式四要素:
            1、模式名称(pattern name)
            2、问题(problem)
            3、解决方案(solution)
            4、效果(consequences)
二、描述设计模式的方法包含内容要素
            1、模式名和分类
            2、意图
            3、别名
            4、动机
            5、适用性
            6、结构: 主要采用对象建模技术(OMT)的表示法对模式中的类进行图形描述,也使用交互图来说明对象之间的请求序列和协作关系。
            7、参与者:指设计模式中的类和对象以及它们各自的职责。
            8、效果
            9、实现
            10、代码实例
            11、已知应用
            12、相关模式

 三、模式分类标准
         根据两条准则分类:
            (一)目的准则:即模式是用来完成什么工作的,根据该准则分为如下三个类型:
                     1、创建型(creational):
                     2、结构型(structural):
                     3、行为型(behavioral):
            (二)范围准则:指定模式是用于类还是对象:
                     1、类模式:
                     2、对象模式:

四、对象接口概念

            1、操作的型构(signature):对象声明的每一个操作指定操作名、作为参数的对象和返回值,这就是所谓的操作的型构。

            2、接口(interface):对象操作所定义的所有操作型构的集合被称为对象的接口。对象的接口描述了该对象所能接受的全部请求的集合,任何匹配对象接口中型构的请求都可以发送给该对象。

            3、类型(type):类型是用来标示特定接口的一个名字。一个对象可以有许多类型,并且不同的对象可以共享同一个类型。两个类型相同的对象只需要共享他们的部分接口,接口可以包含其他接口作为子集,当一个类型的接口包含另一个类型的接口时,我们就说它是另一个类型的子类型(subtype),另一个类型称之为它的超类型(supertype)。我们常说子类型继承了它的超类型的接口。

            4、动态绑定(dynamic binding):发送给对象的请求和它的相应操作在运行时刻的连接就称之为动态绑定。

五、描述对象实现用的OMT表示法

               1、类:类描述为一个矩形,其中类名以黑体表示。
               2、类的操作:操作在类名下面,以常规字体描述。
               3、类的数据:类所定义的任何数据都在操作下面,类名与操作之间以及操作与数据之间用横线分割。
               4、类的实例化:虚箭头线表示类实例化另一个类的对象,箭头指向被实例化的对象的类。
               5、子类与父类:用竖线和三角表示子类和父类关系。
               6、抽象类:类名采用斜体表示。
               7、抽象操作:操作名采用斜体表示。
               8、混入类(mixin class):给其他类提供可选择的接口或功能的类,它与抽象类一样不能实例化,采用多继承方法,同时类名和操作名都斜体。

六、面向对象基本概念比较:
            (一)对象的类(class)与对象的类型(type)
                        一个对象的类定义了对象是怎样实现的,同时也定义了对象内部状态和操作的实现。但是对象的类型只与它的接口有关,接口即对象能响应的请求的集合。一个对象可以有多个类型,不同类的对象可以有相同的类型。当然对象的类和类型是有紧密联系的,因为类定义了对象所能执行的操作,也定义了对象的类型,当我们说一个对象是一个类的实例时,即指该对象支持类所有定义的接口。c++语言类指定对象的类型也指定对象的实现。
            (二)类继承、接口继承、实现继承
                  类继承:类继承根据一个对象的实现定义另一个对象的实现,它是代码和表示的共享机制。
                  接口继承:描述一个对象什么时候被用来替代另一个对象。
                  C++中接口继承的标准方法是公有继承一个含(纯)虚成员函数的类。c++中纯接口继承接近于公有继承纯抽象类,纯实现继承或纯类继承接近于私有继承。

七、复用机制
            (一)继承与组合
                  继承:类继承允许你根据其他类的实现来定义一个类的实现,这种通过生成子类的复用称为白箱复用(在继承方式中,父类的内部细节对子类可见)。
                  1、继承是在编译时刻静态定义的,可直接使用,当一个子类重定义一些而不是全部操作时,它也能影响它所继承的操作,只要这些操作中调用了被重定义的操作。

               组合:新的更复杂的功能可以通过组装或组合对象来获得,对象组合要求被组合的对象具有良好定义的接口。对象的内部细节不可见,所以以黑箱的形式出现。
               对象组合是通过获得对其他对象的引用而在运行时刻动态定义的。组合要求对象遵守彼此的接口约定,进而要求更仔细的定义接口,而这些接口并不防碍你将一个对象和其他对象一起使用。这还产生良好的结果:因为对象只能通过接口访问,所以我们并不破坏封装性,只要类型一致,运行时刻还可以用一个对象替代另一个对象;对象的实现是基于接口写的,所以实现上存在较少的依赖关系。
            (二)委托
               委托(delegation)是一种组合方法,它使组合具有与继承同样的复用能力。在委托方式下,有两个对象参与处理一个请求,接受请求的对象将操作委托给他的代理者(delegate)。
            (三)继承和参数化类型
            参数化类型(parameterized type)在c++中是模板,它允许你在定义一个类型时并不指定该类型所用到的其他所有类型。未经指定的类型在使用时以参数形式提供。
   (四)聚合(aggregation)和相识(acquaintance)
      聚合意味着一个对象拥有另一个对象或对另一个对象负责,一般我们称一个对象包含另一个对象或者时另一个对象的一部分,聚合意味着聚合对象和其所有者具有相同的生命周期。
    相识意味着一个对象仅仅知道另一个对象,有时相识被称为“关联”或“引用”关系,相识对象可能请求彼此的操作,但是不对对方负责。
    c++中聚合可以通过定义表示真正的实例成员变量来实现,但更通常的是将这些成员变量定义为实例指针或引用;相识也是以指针或引用来实现。















                     
                     


只有注册用户登录后才能发表评论。
网站导航:   博客园   博客园最新博文   博问   管理