浅谈软件设计模式的应用场景(一)

来源:互联网 发布:linux修改war文件 编辑:程序博客网 时间:2024/06/04 18:32

提到软件设计模式,大家并不陌生,许多的书上面都有很细致深刻的讲解。比如《设计模式》,《设计模式解析》,《重构与模式》等等,许多的书讲得都比较抽象,概念性都比较强,也有一些比较趣味易懂的书,如《大话设计模式》,这本书非常适合对面向对象编程有了一定的基础认识,并且想更进一步的去提高在软件的设计思想和原则方面进行提高的人群。以下内容是我自己学习了软件设计模式之后的一些自己的见解,对常用的软件设计模式在应用场景上进行一个简单的介绍,仅供参考。

设计模式其实并不是什么新的知识或者说是一个比较难以去学习的东西,他只是在面向对象编程的思想基础上,运用面向对象编程的基本思想去合理的组织代码结构,通过继承、多态、封装等特性来对程序进行重构,以达到各类预期的效果,如可扩展性,易维护性,易复用等特点,减少在软件开发过程中因为需求的不段变化而导致程序的更改愈加困难。

学习了设计模式以及一些原则之后,切忌不可在自己的实际运用过程中,强行的按照设计模式原则的方式进行硬性模仿,世上没有绝对的东西,这些设计模式有的可能会互相互补,也有互相矛盾之处,都是前人在长期的软件开发过程中总结出来的一些比较好的思想,大家要根据自己的实际场景进行有所取舍的运用,主要是让你从思想上对面向对象程序编程有一个高度的认识。

       简单工厂模式(SimpleFactory Method):简单工厂模式是由一个工厂对象决定创建出哪一种具体产品类的实例,适用于创建对象少,对创建对象的过程不关心,由客户端传入工厂类的参数,变可获得对应的实例对象。由于简单工厂很容易违反高内聚责任分配原则,因此一般只在很简单的情况下应用。

策略模式(Strategy):策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合。策略模式就是用来封装算法的,但是在实践中,我们发现可以用来封装几乎任何类型的规则,只要在分析过程中听到需要在不同的时间应用不同的规则,就可以考虑使用策略模式处理这种变化的可能性。

单一职责原则(SRP):就一个类而言,应该仅有一个引起它变化的原因。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离,如果你能够想到多余一个的动机去改变一个类,那么这个类就具有多于一个的职责。

开放封闭原则(OCP,Open Closed Principle):无论模块是多么的“封闭”,都会存在一些无法对之封闭的变化,既然不可能完全封闭,设计人员必须对于他设计的模块应该对哪种变化封闭做出选择,他必须先猜测出最具有可能发生变化的种类,然后构造抽象来隔离那些变化。遵循这个原则可以带来面向对象技术所声称的巨大好处,也就是可维护,可扩展,可复用,灵活性好。开发人员应该仅对程序中呈现出频繁变化的那些部分做出抽象,然后,对于应用程序中的每个部分都刻意地进行抽象同样不是一个好主意。拒绝不成熟的抽象和抽象本事一样重要。

里氏代换原则(LSP):一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别。也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化。如果编写时考虑的都是如何针对抽象编程而不是针对细节编程,即程序中所有的依赖关系都是终止于抽象类或者接口,那就是面向对象的设计,反之那就是过程化的设计了。

装饰模式(Decorator Pattern):装饰模式是在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。