注意:本文参考于《大话设计模式》。
何为开放-封闭原则,是说软件实体(类,模块,函数等等)应该可以扩展,但是不可以修改。
我们做任何系统的时候,都不要指望一开始需求就能确定,就再也不会变化。这是不现实也不科学的想法,而既然需求是一定会变化的,那么如何如何实现这点呢。就是要多扩展,少修改。你设计的时候,时刻要考虑,尽量然后这个类足够好,写好了就不要去修改了,新需求以及新变动来了后,能不动则不动。
当然这件事情不是绝对的。无论模块是多么的封闭,都不能存在一些无法对之封闭的计划。设计人员写代码的时候,需要猜出最有可能发生变化种类,然后构造抽象来隔离那些变化。切记去烂抽离。
开放原则就此结束,接下来我们这边介绍装饰模式。
首先我们这边看看需求:还是拿大话设计模式里面的例子来讲。
首先有个人,他有一个行为叫做形象展示。他有的衣服有大t恤,大垮裤,球鞋,西装,领带,皮鞋等。
这里的代码应该怎么去写呢?
首先我们这边创建一个person的对象,然后再去创建一个服饰的对象抽象化,然后这个服饰对象有个打扮的方法。
装饰模式:动态的给一个对象添加一些额外的职责,就单一增加功能来说。这个比增加子类更加的灵活。方法里面有一个装饰的过程,已至于最后传出装饰的衣服。简单点说,装饰模式是为已有的功能添加更多的功能的一种方式。
打个比方:当系统需要新功能的时候,是向旧的类添加新的代码。这些新加的代码通常装饰了原有类的核心职责和主要行为。这些新加的东西仅仅是为了满足一些只在某种特定的情况下才会执行的特殊行为职责。而装饰模式则在这里提供了一个非常好的解决方案。它把每个要装饰的功能放在单独的类中,并且让这个类包装它需要装饰的对象。因此执行特殊行为时,就可以有选择和顺序的包装需要包装的那个对象。
优点:把核心功能和装饰功能分开,并且把装饰类去掉还可以简化原有的类。暂时就这么多后期再补充。
网友评论