Problem in OO design and pattern approach

1. Problem:

    软件设计的变化可以归于2类:

    1.1, 改变某方法行为.

    1.2, 增加新方法(不改变已有类).

2. Solution:

    @1.1, OO中的继承和多态, DP中众多模式都是解决此问题, virtual method, 通过新增类来override出新行为. 

    @1.2, DP中的Visitor pattern提供了一个比较trick的方案. Visitor pattern本质是通过Solution@1.1来解决. 每一个具体的visitor是一个新方法的实现, client通过调用已有类的accept(visitor)方法,转接调用到具体的visitor(Current Class)实现, 来模拟新方法的运行.

    关于这点的讨论在[1]有介绍, .net 3.0之后引入了Extend method.

 

 

 

------------------------------------------------------------------------------------------------------

Ref:

[1] Beautiful architecture 1st Edition. By Diomidis Spinellis, Georgios Gousios. Chapter 13.6: Agents: Wrapping Operations into Objects.

 

posted @ 2009-06-02 14:24  Tyrael  阅读(104)  评论(0编辑  收藏  举报