模式设计学习(7)

    虽然GOF模式分为创建型、结构型、行为型三类。其实有些模式还是可以细分下,至少我发现,有些模式适合“初始设计”,有些模式适合“重构”。

    目前看来:Decorator模式和Visit模式就适合于“需求变更”。

     首先Decorator模式,有时需要为一个类增加新的功能,这可能是因为需求变更或者其他原因,总之,我们如果事先可以预判到一个类的功能不太容易闭合,那么我们就可以优先使用Decorator模式,通过不断的给这个类增加“装饰器”,而不是不断的生成它的子类。如下图:

模式设计学习(7)_第1张图片

1.Component就是装饰器模式中公共方法的类,在装饰器模式结构图的顶层。

2.ConcreateComponent是具体的被装饰的类。

3.Decorator装饰器模式中的核心对象,所有具体装饰器对象的父类,完成装饰器的部分职能。他有一个鲜明的特点:继承自Component,同时包含一个Component作为其成员变量。装饰器模式动机中的动态地增加功能是在这里实现的。

4.ConcreteDecoratorAConcreteDecoratorB是两个具体的装饰器对象,他们完成具体的装饰功能。装饰功能的实现是通过调用被装饰对象对应的方法,加上装饰对象自身的方法。这是装饰器模式动机中的添加额外功能的关键。

该模式是GOF模式中的结构型模式。

   我们再来看看Visit模式,该模式也是为了解决需求变更的一种模式,能在不破坏类的封闭

原则下为类增加新的功能。该模式目的是解决了双分派的问题,双分派意味着执行的操作将

决于请求者的种类和接收者的类型。UML类图如下:

模式设计学习(7)_第2张图片

你可能感兴趣的:(Decorator,UML)