设计模式

1.设计模式的分类

总体来说设计模式分为三大类

创建型模式,共五种

  工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。

结构性模型,共七种

  适配器模型,装饰器模型,代理模式,外观模式,桥接模式,组合模式,享元模式。

行为型模型,共十一种

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

2.设计模式的六大原则

总原则:开闭原则

  开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,而是要扩展原有的代码,实现一个热插拔的效果。所以一句话概括:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口抽象类等。

1.单一职责原则

  不要存在多于一个导致类变更的原因,也就是说每个类应该实现单一的职责,如若不然,就应该把类拆分。

2.里氏替换原则

  里氏替换原则(lsp)是面向对象设计的基本原则之一。里氏替换原则中说,任何基类可以出现的地方,子类一定可以出现LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏替换原则就是对“开闭原则”的补充。实现开闭原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏替换原则是对实现抽象化的具体步骤的规范

  里氏替换原则中,子类对父类的方法尽量不要重写和重载。因为父类代表定义好的结构,通过这个规范的接口与外界交互,子类不应该随便破坏他。

3.依赖倒转原则

  这个是开闭原则的基础,具体内容:面向接口编程,依赖于抽象而不依赖与具体。写代码时用到具体类时,不与具体类交互,而与具体类的上层接口交互。

4.接口隔离原则

  这个原则的意思是:每个接口中不存在子类用不到确必须实现的方法,如果不然,就要将接口拆分。使用多个隔离的接口,比使用单个接口(多个接口方法集合到一个的接口)要好。

5.迪米特法则(最少知道原则)

  一个类对自己依赖的类知道的越少越好,也就是说无论被依赖的类多么复杂,都应该将逻辑封装在方法的内部通过public方法提供给外部。这样当被依赖的类变化时,才能最小的影响该类。

6.合成复用原则

  原则是尽量首先使用合成/聚合的方式,而不是使用继承

转载于:https://www.cnblogs.com/yjxyy/p/11146088.html

设计模式---设计模式的分类及六大原则相关推荐

  1. 接口隔离原则_设计模式的三大分类及六大原则

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用.设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案.这些解决方案是众多软件开发人员经过 ...

  2. 初识设计模式、软件设计的六大原则

    总结:本篇文字分为两个部分.第一部分:设计模式基本常识:第二部分:软件设计中的六大原则,并详细分析了单一职责原则.(本篇文章的时间轴参考:为知笔记支撑文件夹\Java设计模式(时间序列图).vsdx) ...

  3. 【设计模式】第一章 面向对象六大原则

    第一章 面向对象六大原则 文章目录 第一章 面向对象六大原则 一.指导思想 二.面向对象六大原则 1.单一职责原则 2.开闭原则 3.里氏替换原则 4.依赖倒置原则 5.接口隔离原则 6.迪米特法则 ...

  4. 【设计模式】软件设计遵循——六大原则

    软件设计遵循--六大原则 1)开闭原则 定义:一个软件实体如类.模块和函数应该对扩展开放,对修改关闭 原则:用抽象构建框架,用实现扩展细节 优点:提高软件系统的可复用性和可维护性 2)里氏替换原则 定 ...

  5. 设计模式的分类和六大设计原则

    学习设计模式我是大学研究<java与模式这本书>1024页,很多没有看懂,并且没有总结起来,这次一定要把设计原则和设计模式总结清楚. 设计模式的分类 设计模式分为三大类: 创建型模式,共五 ...

  6. 快速理解-设计模式六大原则

    前言:设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性.设计模式使代码编 ...

  7. 设计模式(2)六大原则(七大原则)

    前言 前面已经明白了UML是什么,UML该在哪里用 接下来开始真正接触设计模式的思想:六大原则 目录 六大原则(七大原则) 开闭原则 2.1. 开闭原则的作用 2.2. 开闭原则的案例 里氏替换原则 ...

  8. 设计模式(一)——六大原则

    概念: 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用.设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案.这些解决方案是众多软件开发 ...

  9. 设计模式六大原则总结------备忘

    作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可.http://www.zuox ...

最新文章

  1. Android 使用adb 命令截图 的方法
  2. 深入理解angularjs $watch ,$apply 和 $digest --- 理解数据绑定过程
  3. bzoj3959(LCT)
  4. 简易的bbs论坛开发过程上(后台开发)
  5. python 语言的基础规范
  6. web开发中不同设备浏览器的区分
  7. 3.2 Spring AOP的设计与实现
  8. mysql 要完 知乎_必知必会 MySQL笔记(未完)
  9. [HAOI2007] 修筑绿化带
  10. python中字符编码:coding utf-8, unicde, defaultencoding, UnicodeDecodeError, UnicodeEncodeError
  11. 运气真不错:3月取到的TeaVM恰好能够运行,之前之后都有问题
  12. 操作 神通数据库_神通数据库安装及操作笔记
  13. Kd树实现K近邻算法
  14. 冒泡排序Java代码实现
  15. vtp协议服务器配置,配置交换机VTP协议
  16. Instrument详解
  17. 伯努利-欧拉装错信封问题
  18. 马尔可夫蒙特卡洛(MCMC)-从平稳分布,细致平衡到Metropolis-Hastings和Gibbs采样
  19. 计算机科学论文生成器,高考满分作文生成器来了!分分钟批量完成「生活在XX上」...
  20. 盘点招招毙命的29种USB攻击方式

热门文章

  1. MariaDB表表达式(2):CTE
  2. JAVA WEB部分易混淆问题总结
  3. PHP执行批量mysql语句
  4. 安装vs 2015 x新建项目 显示(未将对象引用设置到对象实例) 处理方法
  5. NSIndexPath类
  6. initWithNibName/awakeFromNib/initWithCoder
  7. 移动端重构系列6——切入切出动画
  8. 企业为什么需要网络流量分析
  9. 【正一专栏】齐达内能熬过2018年的春天吗?
  10. 【Python学习系列四】Python程序通过hadoop-streaming提交到Hadoop集群执行MapReduce