设计模式总是学不会?是时候换个姿势了

栏目: 后端 · 发布时间: 5年前

内容简介:设计模式,1977 年有位美国著名建筑大师提出,他叫Christopher Alexander(克里斯托弗.亚历山大)。他拥有剑桥大学数学硕士学位和建筑学学士学位,以及哈佛大学建筑学博士学位,有“模式它爹”的称号。1990 年,软件工程界开始研讨设计模式的话题。1994 年,艾瑞克·伽马(ErichGamma)、理査德·海尔姆(Richard Helm)、拉尔夫·约翰森(Ralph Johnson)、约翰·威利斯迪斯(John Vlissides)等 4 位作者合作出版了《设计模式:可复用面向对象软件的基础
设计模式总是学不会?是时候换个姿势了

设计模式,1977 年有位美国著名建筑大师提出,他叫Christopher Alexander(克里斯托弗.亚历山大)。他拥有剑桥大学数学硕士学位和建筑学学士学位,以及哈佛大学建筑学博士学位,有“模式它爹”的称号。

设计模式总是学不会?是时候换个姿势了

1990 年,软件工程界开始研讨 设计模式 的话题。1994 年,艾瑞克·伽马(ErichGamma)、理査德·海尔姆(Richard Helm)、拉尔夫·约翰森(Ralph Johnson)、约翰·威利斯迪斯(John Vlissides)等 4 位作者合作出版了《设计模式:可复用面向对象软件的基础》(Design Patterns: Elements of Reusable Object-Oriented Software)一书。

设计模式总是学不会?是时候换个姿势了

在本教程中收录了 23 个设计模式,这是设计模式领域里程碑的事件,导致了软件设计模式的突破。

设计模式总是学不会?是时候换个姿势了

这 4 位作者在软件开发领域里也以他们的“四人组”(Gang of Four,GoF)匿名著称。

什么是设计模式?

设计模式总是学不会?是时候换个姿势了

它能提高 程序员 的思维能力、编程能力和设计能力。

它是解决特定问题的一系列套路,有一定的普遍性。

它是一套被反复使用、多数人知晓的、代码设计经验的总结。

它可以提高代码的可重用性、代码的可读性和代码的可靠性以及可扩展性。

它能使程序设计更加标准化,使软件开发效率大大提高,从而缩短软件的开发周期

是它是它就是它,编程界的武林秘籍,绝世高手都练过它!

设计模式总是学不会?是时候换个姿势了

设计模式的分类

模式一共分为3种不同类型的模式。

创建型模式(Creational patterns)

提供对象创建机制,增加现有代码的灵活性和重用。

结构型模式(Structural patterns)

解释如何将对象和类组装成更大的结构,同时保持结构的灵活性和高效性。

行为型模式(Behavioral patterns)

负责有效的沟通和对象之间的责任分配。

设计模式总是学不会?是时候换个姿势了
设计模式总是学不会?是时候换个姿势了

设计模式的七大原则

单一职责原则 (Single Responsibility Principle, SRP)

含义:一个类只负责一个功能领域中的相应职责。

栗子:就像一家公司,团队中每个人都分工明确。有产品经理,项目经理,技术经理,QA经理等等。

设计模式总是学不会?是时候换个姿势了

好处:降低类复杂性降低,提高代码可读性,提高可维护性。

设计模式总是学不会?是时候换个姿势了

开闭原则 (Open-Closed Principle, OCP)

含义:软件模块应该对扩展开放,对修改关闭。在程序需要进行新增功能的时候,不能去修改原有的代码,而是新增代码。

栗子:就像插座一样,可以给很多不同的电器充电,但是不需要改变插座本身,只要提前把插头的规格定义好。

设计模式总是学不会?是时候换个姿势了

好处:为了使程序的扩展性好,易于维护和升级。

设计模式总是学不会?是时候换个姿势了

里氏代换原则 (Liskov Substitution Principle, LSP)

含义:子类可以扩展父类的功能,但不能改变父类原有的功能。

栗子:正好今天请我去吃小龙虾,那就说说虾,它是一种食品。虾的衍生类很多有南极红虾、青虾、河虾、草虾、对虾、明虾、龙虾等,如果衍生类替换了基类的原本方法,如把食品改成了体育用品(那么软件的基本功能受到影响),就不符合里氏代换原则。

设计模式总是学不会?是时候换个姿势了

好处:对实现抽象化的具体步骤的规范。

设计模式总是学不会?是时候换个姿势了

依赖倒转原则 (Dependence Inversion Principle, DIP)

含义:高层模块不应该依赖低层模块,二者都应该依赖其抽象。针对接口编程,而不是针对实现编程。

栗子:以电脑为例,无论主板、CPU、内存、硬件都是在针对接口设计的,如果出现某个局部的配件坏了就只要替换对应的配件就行了。如果针对实现来设计,那么电脑显示屏坏了就需要把主机也一并换掉。

设计模式总是学不会?是时候换个姿势了

好处:降低模块间的耦合。

设计模式总是学不会?是时候换个姿势了

接口隔离原则 (Interface Segregation Principle, ISP)

含义:使用多个隔离的接口,比使用单个接口要好,将臃肿庞大的接口拆分成更小的接口。

栗子:假设要设计操控机器人的接口,不能只有行动和停止的接口,行动可以拆分成前进,后退,转向,跳跃,等等,接口拆分可以使组合更多。

设计模式总是学不会?是时候换个姿势了

好处:提高系统的灵活性和可维护性。

设计模式总是学不会?是时候换个姿势了

合成复用原则 (Composite Reuse Principle, CRP)

含义:就是能用合成/聚合的地方,绝不用继承。尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。

栗子:汽车按“动力源”划分可分为汽油汽车、电动汽车等;按“颜色”划分可分为白色汽车、黑色汽车和红色汽车等。如果同时考虑这两种分类,其组合就很多。

设计模式总是学不会?是时候换个姿势了

好处:提高灵活性,降低类与类之间的耦合度。

设计模式总是学不会?是时候换个姿势了

迪米特法则 (Law of Demeter, LoD)

含义:又叫最少知道原则,一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。

栗子:智能音箱,只需要把指令告诉智能音箱,智能音箱就会识别指令去调用各种已链接的电器,如:我要看湖南卫视,把空调温度低一点,扫地机器人开启清扫,等等。智能音箱帮我们解决了要找很多遥控器的烦恼。

设计模式总是学不会?是时候换个姿势了

好处:降低类之间的耦合,减少对其他类的依赖。

设计模式总是学不会?是时候换个姿势了

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

PHP项目开发全程实录

PHP项目开发全程实录

清华大学出版社 / 2008 / 56.00元

《软件项目开发全程实录丛书•PHP项目开发全程实录:DVD17小时语音视频讲解(附光盘1张)》主要特色: (1)12-32小时全程语音同步视频讲解,目前市场上唯一的“全程语音视频教学”的案例类 图书,培训数千元容,尽在一盘中! (2)10套“应用系统”并公开全部“源代码”,誓将案例学习进行到底! (3)丛书总计80个应用系统300个应用模块。 (4)含5000页SQL se......一起来看看 《PHP项目开发全程实录》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具