设计模式探讨与研究.docVIP

  • 13
  • 0
  • 约3.31千字
  • 约 7页
  • 2018-09-20 发布于福建
  • 举报
设计模式探讨与研究

设计模式探讨与研究   [摘要] 面向对象技术是目前最主要的软件开发方法,面向对象的本质特点是抽象。设计模式将面向对象思想应用在各种典型问题的解决方案上,是我们学习面向对象设计的最佳案例。学习和运用设计模式是我们提高面向对象程序设计的捷径,通过在实际项目设计过程中运用设计模式以及一些已经成熟的技术,能够较好的实现系统的稳定性、灵活性和可扩展性。   [关键词] 设计模式抽象扩展性复用性      一、引言   随着信息技术的飞速发展,软件设计人员在开发中所遇到的问题也越来越多。为了解决这些问题,更好的提高软件开发的效率,越来越多的软件从业人员在不断的寻找新的解决途径。   虽然软件复用技术已经提高到设计方案的复用阶段,但是企业应用中的系统也是在不断向着巨型化复杂化方向发展的。因此,软件设计人员在开发设计软件的时候不仅要考虑到系统的功能性问题,而且也必须把更多的时间和精力花费在系统的非功能需求上,如系统的可靠性,可移植性等。设计模式是为了解决在一定环境下反复不断出现问题的方法,是软件开发中的一种解决方案。   二、设计模式的原理   在开发系统的时候引入设计模式,不仅可以使系统中各个模块的耦合性降低,而且还增加了模块之间的内聚。使得在需要修改或者某个模块的时候可以被单独的拿出来改动,并不需要破坏模块与模块的联系和协作关系,对整个系统的影响不会有太大的破坏。在这样一种前提下,系统就可以很方便地进行扩展,而不需要再担心扩展会破坏系统的完整性。另一方面,只要接口保持一致,当前系统中已有的模块也可以直接地被复用到下一个系统中,或者是进行少量的修改就可以实现软件的复用,从而在很大程度上减轻了系统开发人员和系统维护人员的工作负担。   在设计模式中,需要用到一些与OOP相关的法则,这些法则也是设计模式自身所依赖和体现的重要原则。通过使用这些法则,可以消除系统间的耦合性,提高系统内的内聚性,使系统更加灵活和易于维护,灵活使用设计模式   1开闭法则(OCP)   开闭法则(Open Close Principle,OCP):软件实体(模块)应该易于扩展(开放),但免于修改(关闭)在面向对象设计法则中,这是最重要的一个。简单地说:当我们撰写软件的一个模块时,应该让它可以扩展,同时无须被修改。换言之,我们希望可以改变模块的行为,而不用改变其源代码。所有这些技术的基础都是建立在抽象(abstraction)之上,因为具体的事物是多交的和易变的,而抽象则抓住了事物的本质和特性,保证了相对的稳定,实现了以不变应万变的强大功能。事实上,抽象是OCP的关键。实现OCP最常用的技术是动态多态(Dynamic Polymorphism)。通过该技术,我们可以改变不良的设计,使之遵循OCP。   2依赖反转法则(DIP)   依赖反转法则(Dependency Inversion Principle,DIP):依赖抽象而不依赖具体。如果说0CP给出了面向对象架构的目标,那么DIP则是这一架构的主要机制。依赖反转的策略强调依赖接口、抽象方法及抽象类,而不是依赖具体方法或类。   在传统的面向过程的设计中,人们习惯于使高层模块依赖于底层模块,抽象层依赖于具体层,由上到下,形成一种顺序依赖的架构设计。这种结构从顶部主模块开始,然后向下发展出细节的部分。高层模块依赖低层的模块,然后再依赖更低层的模块,如此延续下去。   这种依赖结构在本质上存在着许多弱点。首先作为底层模块其实现的是具体细节,这就决定了它的多变。如果总是向下依赖于多变的下级模块,必然会把这种变化不定的因素传播到上层,影响系统的稳定性和健壮性。虽然通过增加中间层的努力可以吸收底层变化因素,但中间层并不能改变这种顺序依赖,相反,中间层的加入反而又导致了上层对中间层的依赖,增加了系统的复杂性。   依赖反转法则的用意相当简单。设计中的每一个依赖关系,应该是朝向接口的,或一个抽象类,而不是依赖一个具体类。这是因为具体的东西常常改变,而抽象的东西比较稳定。抽象往往能使我们有更多的回旋余地。抽象层是上下层之间的枢纽,代表设计中可以伸缩或扩充的地方,而且在变动时不至于被修改,从而达到OCP的要求。   3.单一职责法则(SRP)   单一职责法则(single―Responsibility Principle,SRP):一个类应该仅有一个原因导致其变化。单一职责法则是指一个类应该只有一个演化方向,那么这个类的变化才是可控的。这里的所谓职责,按照Robert C.Martin的说法就是“一个导致变化的原因”。因为调整一个类所承担的职责才是我们去改动这个类的真正动机,所以导致变化的原因源于类的职责。如果一个类包含过多的职责,这就意味着会有多个导致其变化的原因。而且,这些变化往往不是孤立

文档评论(0)

1亿VIP精品文档

相关文档