设计模式分为三类

创建型模式:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式;

结构型模式:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式;

行为型模式:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式;

是不是看了上面也看不懂,所以我们需要一些比较好记的故事模式来记:

创建型(5个):一个人(单例模式)根据一个工厂(工厂方法模式)的原型(原型模式)创建了(建造者模式)另一个工厂(抽象工厂模式);

结构型(7个):小明代替(代理模式)小雷去跟小红约会,约会的地点是桥头(桥接模式)看烟花,小明需要通过衬衣、裤子、皮鞋搭配的一套衣服(组合模式)来装扮(装饰模式)成小雷的模样(外观模式),并且模仿适配(适配器模式)小雷的行为,最后他们很享受这次的约会(享元模式);

行为型(11个):一个观察者(观察者模式)在电脑上发现了可疑的访问者(访问者模式),需要一个中介者(中介者模式)通过一连串(职责链模式)的算法策略(策略模式)进行循环迭代(迭代器模式)来解释(解释器模式)这条命令(命令模式)知道访问者的状态(状态模式),记录(备忘录模式)下来形成模板(模板方法);

特殊的模式???——》并发型模式、线程池模式;

设计模式的六大原则???——》总原则:开闭原则、单一职责原则、里氏替换原则、依赖倒转原则、接口隔离原则、迪米特法则、合成复用原则;(单一的里氏接口,其开闭依赖于迪米特的合成复用形式;)

“总原则:开闭原则”???——》能扩展为开放,不能修改为封闭;

注意:为了使程序的扩展性好,易于维护和升级;???——》使用接口和抽象类;

单一职责原则???——》不要存在多于一个导致类变更的原因???——》每个类应该实现单一的职责,否则就应该把类拆分

里氏替换原则???——》任何基类可以出现的地方,子类一定可以出现;

特点:

  • 是继承复用的基石;???——》衍生类可以替换基类,且软件单位的功能不受到影响;而衍生类也能够在基类的基础上增加新的行为;
  • 对“开-闭”原则的补充;???——》对抽象化实现具体的步骤规范;???——》基类与子类的继承关系就是抽象化的具体实现;
  • 实现“开闭”原则的关键步骤就是抽象化;
  • 子类对父类的方法尽量不要重写和重载???——》“父类”代表了定义好的结构,并通过这个规范的接口与外界交互;
  • 重写、重载???——》破坏父类的结构;

依赖倒转原则???——》面向接口编程,依赖于抽象而不依赖于具体;

注意:写代码时用到具体类时,但不和具体类交互,而是和具体类的上层接口交互;

接口隔离原则???——》每个接口中不存在子类用不到,却必须要实现的方法;如果不然,就要将接口拆分;

注意:使用多个隔离的接口,比使用单个接口要好;

单个接口???——》多个接口方法集合到一个的接口;

迪米特法则(最少知道原则)???——》一个类对自己依赖的类知道的越少越好;

注意:

  • 被依赖的类发生变化时,如何最小的影响依赖的类???——》将逻辑封装在方法的内部,通过public方法提供给外部;
  • 最少知道原则的另一个表达方式;???——》只与直接的朋友通信;
  • 朋友关系???——》类之间有耦合关系;
  • 直接朋友???——》成员变量、方法参数、方法返回值中的类;
  • 不是直接的朋友???——》局部变量、临时变量;???——》我们要求陌生的类不要作为局部变量出现在类中;

设计模型概念了解-------------【设计模型】相关推荐

  1. allegro 3D模型怎么找? PCB的DFA如何设计?如何加载PCB的3D模型?如何避免器件之间的干涉?PCB的3D设计 DFA设计的概念

    一些群友问杨老师,allegro的3D模型模型怎么找? PCB的DFA如何设计?如何加载PCB的3D模型?如何避免器件之间的干涉?这里杨老师对PCB中DFA设计常见的几种方法进行分析下 这些问题来自群 ...

  2. 数据库设计(一):ER模型概念介绍

    数据库设计步骤 数据库的设计分为以下3个步骤: 设计概念模型(conceptual model).在关系型数据库中,我们使用ER图来进行概念模型的设计.ER图的作用是:表示出各个实体之间的关系,方便在 ...

  3. 【架构设计】领域模型(概念模型) 、逻辑模型、物理模型、贫血模型、充血模型概念总结【待读与标记】

    本文选自: http://www.jianshu.com/p/fe45506ea358 http://blog.csdn.net/zsy_gemini/article/details/9060105 ...

  4. 外部表不是预期的格式_超详细的CMDB介绍--概念、架构、模型、表设计及开源选择...

    概述 今天主要介绍一下CMDB的一些基础内容,感兴趣的朋友可以看看~ 一.cmdb是什么? >>百度百科 配置管理数据库( Configuration Management Databas ...

  5. Linux学习总结(63)——CMDB 详细介绍:概念、架构、模型、表设计及开源选择

    一.cmdb是什么? >>百度百科 配置管理数据库( Configuration Management Database,CMDB)是一个逻辑数据库,包含了配置项全生命周期的信息以及配置项 ...

  6. 原型开发、模型构建和设计反馈在线工具

    Lumzy       你在创建新的UI技术任何时候,在创建网站之前,你会需要创造出一个作为概念根据的原型或模型.当然,你也要测试这些新构想.       Lumzy是一个方便的UI界面模型构建和原型 ...

  7. 贫血模型,充血模型(领域驱动设计)

    很多业务系统都是基于 MVC 三层架构来开发的.虽然这种开发模式已经成为标准的 Web 项目的开发模式,但它却违反了面向对象编程风格,是一种彻彻底底的面向过程的编程风格. MVC 三层架构中的 M 表 ...

  8. 计算机组成原理认识fpga,计算机组成原理课程设计-基于EDA和FPGA技术的8位模型计算机的设计与实现_精品.doc...

    计算机组成原理课程设计-基于EDA和FPGA技术的8位模型计算机的设计与实现_精品 目录 前言2 第一章 课程设计内容2 1.1 实验要求2 1.2 实验目的2 第二章 实验原理及方案2 2.1 实验 ...

  9. [导入]WCF后传系列(8):深度通道编程模型Part 1—设计篇

    摘要: 从本质上说,WCF是一个通信服务框架,它允许我们使用不同的传输协议,使用不同的消息编码形式,跟不同的WS-*系列规范交互,而所有这些细节都是由通道堆栈来处理的.为了简化这些处理,在WCF中提供 ...

  10. 设计一台模型计算机 实现下列指令系统,基本模型机的设计与实现1

    中国计量学院 计算机组成原理课程设计报告书 基本模型机的设计与实现 班 级 0X计算机X班 学 号 XXXXXXX 姓 名 XX 指导教师 XXX 日 期 2008/ 01/ 10 一.实验目的 1. ...

最新文章

  1. 虚拟机WIN7显示主机ubuntu的文件
  2. UVA10391复合词
  3. js最全的十种跨域解决方案
  4. 【MongoDB for Java】Java操作MongoDB
  5. 小程序 房租水电费记录管理_移民局小程序:中国出入境记录的官方查询利器...
  6. azure db 设置时区_将数据迁移到Azure Cosmos DB
  7. 近些年很火的Java,就业前景到底怎么样?
  8. 计算机原理华东理工大学期末成绩查询,华东理工大学微机原理历年真题第十一章.ppt...
  9. 在 可编辑的 Div 的 光标位置 插入 文字 或 HTML
  10. UI——day3.IOS设计规范
  11. “责任”也是一种竞争力:《穹顶之下》与美丽中国
  12. C语言之指向一维数组的指针
  13. 棋盘覆盖问题(分治)
  14. 链表中为何使用二级指针
  15. 2022-Arch安装(详细)
  16. 【SQL查询表中某一字段重复的数据】
  17. rt linux 测试,Ubuntu下测试RT-Linux的性能
  18. 稳扎稳打JS——执行上下文
  19. 普及一下什么是蓝牙和BLE,看完让你秒懂
  20. 使用MNE编辑EEG脑电电极(脑电地形图)配置文件 (以SEED数据集的电极排布为例)

热门文章

  1. cuda operator稀疏矩阵csr相加
  2. (转)唯品会订单分库分表的实践总结以及关键步骤
  3. Zoomla!逐浪CMS高端全栈训练营—开始报名啦
  4. Java面向对象 继承,super,方法重写
  5. 老卫带你学---CMake Error: CMake was unable to find a build program corresponding to MinGW Makefiles. CM
  6. Timer/Counter
  7. 《PCL点云库学习VS2010(X64)》Part 34 旋转平移矩阵用法
  8. 阿里云互动课堂解决方案助力淘宝教育,打造普惠教育平台
  9. 什么是多态?为什么用多态?有什么好处?
  10. 亚马逊开店创业 稳扎稳打稳赚钱