为什么要学习设计模式?

以下内容主要是对我学习时看了的总结。

1.什么是软件设计模式

软件设计模式(Software Design Pattern),又称设计模式,是一套被反复使用、多数人知晓的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的可重用性、代码的可读性和代码的可靠性。

2.学习设计模式的意义

设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解。正确使用设计模式具有以下优点。

    可以提高程序员的思维能力、编程能力和设计能力。 使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从而缩短软件的开发周期。 使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。

没有绝对完美的设计模式,在具体的软件幵发中,必须根据设计的应用系统的特点和要求来恰当选择。

3.面向对象设计原则

上面说了设计模式本质上是面向对象设计原则的实际运用,我们下面就来看看面向对象的几大设计原则。 为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据 7 条原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。

1)开闭原则:软件实体应当对扩展开放,对修改关闭

实现方法:通过“抽象约束、封装变化”来实现开闭原则,即通过接口或者抽象类为软件实体定义一个相对稳定的抽象层,而将相同的可变因素封装在具体实现类中。

2)里氏替换原则:继承必须确保超类所拥有的性质在子类中仍然成立(也就是说:子类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类的方法,抽象类除外)

3)依赖倒置原则:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象(要面向接口编程,不要面向实现编程,降低类耦合)

实现方法:面向接口编程

4)单一职责原则:一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分(控制类的粒度大小、将对象解耦、提高其内聚性)

实现方法:发现类的不同职责并将其分离,再封装到不同的类或模块中。

5)接口隔离原则:要为各个类建立它们需要的专用接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。

实现方法:从依赖者的角度来说,只依赖应该依赖的对象。从被依赖者的角度说,只暴露应该暴露的方法。

7)合成复用原则:在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。(如果要使用继承关系,则必须严格遵循里氏替换原则。)

实现方法:通过将已有的对象纳入新对象中,作为新对象的成员对象来实现的,新对象可以调用已有对象的功能,从而达到复用。

总结:这 7 种设计原则是软件设计模式必须尽量遵循的原则,各种原则要求的侧重点不同。其中,开闭原则是总纲,它告诉我们要对扩展开放,对修改关闭;里氏替换原则告诉我们不要破坏继承体系;依赖倒置原则告诉我们要面向接口编程;单一职责原则告诉我们实现类要职责单一;接口隔离原则告诉我们在设计接口的时候要精简单一;迪米特法则告诉我们要降低耦合度;合成复用原则告诉我们要优先使用组合或者聚合关系复用,少用继承关系复用。 具体我们需要对应实际的场景,去理解这些原理。比如结合spring源码。

参考地址:http://c.biancheng.net/view/1317.html

经验分享 程序员 微信小程序 职场和发展