如果用面向对象的思想来分析,可以把领料单、借料单、报损单看作是出库单的派生类,如图 1‑2所示。这样出库单作为单据基类提供单据的共同接口,而利用继承的办法在子类里实现不同的出库行为。这实际上利用了面向对象里的一个重要概念:多态。
但是这样的设计还有美中不足的地方,这就是环境和行为紧密耦合在一起。也就是说,单据和具体出库的算法紧密耦合在一起。强耦合使得两者不能独立演化,限制了重用性和扩展性。
图 1‑3是利用策略模式重新设计的出库模块。出库单据对象通过一个出库操作对象(即策略模式中的Context)来引用出库策略对象。各种具体的出库策略则由出库策略类的派生类实现。出库单据可以由出库操作和单据样式分别提供出库结算方法和单据显示界面。这样,策略模式就把出库的行为从出库单据的环境中独立出来,出库算法的增减、修改都不会影响到环境和客户端。


策略模式的优势在于算法和环境的分离,两者可以独立演化。为了更好地说明算法和环境分离的好处,我们不妨看一下图 1‑4的设计。在这个设计中,已经没有出库和入库模块的概念,因为我将所有出
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




