设计模式-概述

面向对象


特性

封装:隐藏内部实现;
继承:复用现有代码;
多态:改写对象行为。

目标

面向对象设计的目标是设计出高内聚、低耦合的应用程序,最大程度的实现程序的复用,以应对复杂的需求变化。

设计原则


  • 单一职责原则
    一个类只负责一个功能领域中的相应职责。

  • 依赖倒置原则

    • 高层模块不应该依赖于低层模块,二者都应该依赖于抽象

    • 抽象不应该依赖于细节,细节应当依赖于抽象。

    • 换言之,要面向接口(抽象类)编程,而不是面向实现编程。

  • 开闭原则
    一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。

  • 接口隔离原则
    使用多个专门的接口,而不使用单一的总接口。

  • 里氏替换原则
    所有基类出现的地方必定能被子类替换,且功能不会发生影响。

  • 合成复用原则
    尽量使用对象组合/聚合,而不是继承来达到复用的目的。

  • 迪米特原则
    也叫最小知识原则,一个软件实体应当尽可能少地与其他实体发生相互作用。类与类之间的耦合度应尽量的低,这样如果类发生变化,影响才会最小。
    只与直接的朋友通信,不跟陌生人说话。

开闭原则是目标,里氏代换原则是基础,依赖倒置原则是手段。设计原则的核心思想是:

  • 隔离变化;

  • 针对接口编程,而不是针对实现编程。

设计模式


模式

模式就是对前人积累的经验的抽象和升华。简单地说,就是从不断重复出现的事件中发现和抽象出规律,并解决同一类问题的经验总结,在软件工程领域中的模式可分为三个层次。

  • 惯用法
    最底层,语言相关,如引用计数,智能指针,垃圾收集等。

  • 设计模式
    中层,语言无关,如工厂模式,策略模式等。

  • 架构模式
    最高层,语言无关,用于高层决策,实现架构复用,如C/S架构,B/S架构,微服务架构等。

说到设计模式就不得不提GOF的《设计模式-可复用面向对象软件的基础》这本书了,它奠定了设计模式在整个软件工程领域的基础,副标题中的可复用面向对象两个关键词恰当的点明了设计模式的核心思想。设计模式根据其目的可分为创建型,结构型和行为型三种类型。

分类

  • 创建型
    创建型模式主要用于创建对象,主要有工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

  • 结构型
    结构型模式主要用于处理类或对象的组合,主要有适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

  • 行为型
    行为型模式主要用于描述对类或对象之间的交互及职责分配,主要有策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

总结


高内聚、低耦合 是面向对象设计最终要实现的目标,七大设计原则是指导方针,而设计模式是最终实践经验总结。这就像武侠小说一样,成为武林高手(高内聚、低耦合)是目标,而七大设计原则好比内功心法,设计模式就好比武功招式。学习招式是为了锤炼内功心法,当心法融汇贯通时,拈花摘叶皆可伤人,具体招式反而不再重要。当然,学了招式,在成为武林高手之前,也不能一直闭关修炼,还需要有高手过招,这就是要去学习优秀的框架了,跟高手进行思想上的碰撞。
但是,无论如何,学习招式是第一步,且行且珍惜!

(0)

相关推荐

  • 重温设计模式系列(三)面向对象设计原则

    背景 面向对象基础知识,只是给了我们一个概念,如何更好的设计出良好的面向对象代码,需要有设计原则作为支持.设计原则是核心指导思想,在这些原则的基础上,经过不断的实践,抽象,提炼逐步产生了针对特定问题的 ...

  • 程序猿必备系列:开发者的蓝图之初探分类

    导语:前天端午想着努力再更一篇,没想到被各种杂事耽搁了,先给大家补个端午安康.上一篇忙着说设计模式有多重要了,反而关于设计模式本身介绍的有点少,这一篇给大伙好好说说设计模式的到底有哪些. 这次就不扯闲 ...

  • 二十三种设计模式修炼手册

    不知不觉,在开发这条道路上摸爬打滚也有些年头了,偶尔回头看看以前写的代码,真可谓粗糙至极.当然了,那时候还是小白,代码写得难看些情有可原,不过现在可不能再用以前的标准去衡量自己了,因此掌握一些高级架构 ...

  • 设计模式(Design Patterns)的简单讲解

    模式的诞生与定义 模式(Pattern)起源于建筑业而非软件业(小本本记下来--) 模式之父--美国加利佛尼亚大学环境结构中心研究所所长Christopher Alexander博士; 模式 : -C ...

  • 23种设计模式入门 - 设计模式概述及七大原则

    设计模式的目的 使程序拥有更好的的 代码复用性(一次编译,处处运行[手动狗头]) 可读性(不可替代性堪忧呀) 可扩展性(新增功能时方便) 可靠性(新增功能后对旧功能没有影响) 高内聚,低耦合 设计模式 ...

  • 设计模式系列之一:23种GoF设计模式概述

    23种GoF设计模式概述 在前面,我们对 GoF 的 23 种设计模式进行了分类,这里先对各个设计模式的功能进行简要介绍,以便有个大概了解.后面的章节再进行详细介绍. 创建型模式 关注于怎么创建对象的 ...

  • 细谈八种架构设计模式及其优缺点概述

    作者:风平浪静如马 一.什么是架构 我想这个问题,十个人回答得有十一个答案,因为另外的那一个是大家妥协的结果.哈哈,我理解,架构就是骨架,如下图所示: 人类的身体的支撑是主要由骨架来承担的,然后是其上 ...

  • 生态旅游概述

    生态旅游被广泛定义为到濒危和通常未受干扰的地方进行的低影响旅游.它与传统旅游不同,因为它可以让游客对当地的自然景观和文化特征有所了解,而且经常为保护提供资金,并有利于经常贫困地区的经济发展. 生态旅游 ...

  • 经络穴位解读——手阳明大肠经概述及重要穴位

    经络穴位解读--手阳明大肠经概述及重要穴位 原创牛奶和奶牛2020-11-30 19:20:14 今天我们来解读一下手阳明大肠经.在中医学里,经络是与脏腑相匹配的.同时也是互为表里的关系.例如手太阴肺 ...

  • 区域地理学概述

    区域地理学是地理学研究世界区域的一个分支.一个地区本身被定义为地球表面的一部分,具有一个或多个类似的特征,使其有别于其他地区.区域地理学研究的是与地方的文化.经济.地形.气候.政治和环境因素有关的特定 ...

  • 概述蛋白石

    蛋白石因颜色.光泽独特而名.其彩虹般绚丽耀目的光芒多彩似马赛克,充满了神秘性,足其它宝石无可比拟的. 虽然名为蛋白石,却非单一色调,如果仅仅是白色,倒反而没有价值了.透明.红色.黄色色系,在澳洲多为乳 ...

  • 中国历史概述(九十六)——蒙古太宗至宪宗时期的政治经济

    前面几期我们着重从军事征服角度介绍了成吉思汗即位到蒙哥去世前后蒙古的历史.本期我们着重介绍在蒙古太宗窝阔台至宪宗蒙哥时期的政治经济等方面的情况. 成吉思汗的分封 蒙古汗国是成吉思汗在母亲.诸弟帮助下建 ...

  • 中国历史概述(九十四下)——附 蒙古对东北地区的征服

    蒙古对东北地区的征服过程,与金国在东北势力的消亡有关.蒙古在东北的统治前期依靠契丹.女真等族贵族建立的政权作为藩属,到元初逐渐改为直接统治. 蒙古对辽西的战争与东辽国的建立 1211年,蒙古军第一次围 ...