轮子哥说过,学习设计模式要越复杂越能体现出设计模式的强大。
但若是初次了解设计模式,还是以简单的方式进行吧!
计划第一篇将23种设计模式以最简单明了的方式描述出来,好从心底有个大概的了解,了解到每一种模式大概是什么东西,大概用在什么地方,大概的样式是什么样的。
之后会为每一种设计模式单开出一篇,进行详细的介绍,优缺点,进阶用法,等等。
看我个人能力吧,我觉得我会把开发过程中得到的想法和经验在这里面完善出来的。

设计原则

  1. 单一职责原则
  2. 里氏替换原则
    所有引用基类的地方必须能透明地使用其子类的对象。通俗点讲,只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或异常,使用者可能根本就不需要知道是父类还是子类。但是,反过来就不行了,有子类出现的地方,父类未必就能适应。
  • 子类必须完全实现父类的方法
  • 子类可以有自己的个性
  • 覆盖或实现父类的方法时输入参数可以被放大
    例如:父类要求参数为ArrayList,子类参数可以放大为List
  • 覆写或实现父类的方法时输出结果可以被缩小
  1. 依赖倒置原则
  2. 开闭原则
    软件实体应该对扩展开放,对修改关闭。

我是小白。
我是小白。
我是小白。

转载于:https://www.cnblogs.com/sdlszjb/p/8570238.html

【设计模式】-写在前面相关推荐

  1. java漂亮的模板设计代码_JAVA模板方法设计模式——Java设计模式,写漂亮的代码——...

    Java设计模式,写漂亮的代码 ----模板方法设计模式 简介: 模板方法设计模式是Java设计模式中很简单.应用非常广泛的的一种设计模式,该模式体现了编程的抽象思想(抽象是所有子类的共性封装), 仅 ...

  2. 浅谈设计模式 | 先有鸡还是先有蛋?先有代码后有设计模式还是先有设计模式再写代码?

    前言 一.面向对象的三大特性 1. 封装 2.继承 3.多态 二.面向对象七个设计原则 1.单一职责原则 2.开放封闭原则 3.里氏替换原则 4.接口隔离原则 5.依赖倒置原则 6.合成复用原则 7. ...

  3. PHP面向对象设计模式

    PHP设计模式--概述 常见的面向对象设计模式大约有23种,但是自从接触PHP后,渐渐发现常见的设计模式好像少了很多,网络上的资料也比较少,身边的PHP同事们有的甚至没有听说过设计模式,这也有可能是P ...

  4. 红橙Darren视频笔记 builder设计模式 navigationbar 导航栏第二版

    1.builder设计模式简介 builder的实际应用的典型案例有AlertDialog和OKHttp 例如 // AlertDialogAlertDialog alertDialog = new ...

  5. Javascript设计模式之——代理模式

    最近在读<javascript设计模式与开发实践>,在这里把文中的各种设计模式写出来,以便加深记忆,也可以分享给初学者.如果你不了解设计模式,那么强烈推荐你阅读一下这本书,相信它可以颠覆你 ...

  6. 面向对象设计模式纵横谈:Prototype 原型模式(笔记记录)

       有一段时间没写东西了,今天继续把没写完的设计模式写完,今天这堂课是创建型设计模式的最后一堂课,原型设计模式,它同样也是解决了对象在创建的过程中的解耦合的情况,面对变化使代码更稳定,更准确的说是使 ...

  7. .NET中的设计模式——一步步发现装饰模式

    前言 过去我的一个朋友常说,学习任何编程语言最困难的部分是运行"Hello World",之后一切都很容易.多年以后,我才意识到他说的很对.学习设计模式的基本目标是要用它,尤其是帮 ...

  8. PHP设计模式——六大原则

    声明:本系列博客参考资料<大话设计模式>,作者程杰. 一般认为遵从以下六大原则的代码是易扩展可复用的代码: 这六大原则任何面向对象的语言都应该遵守的,要想让你的代码易扩展高服用就尽量去满足 ...

  9. C# 设计模式:创建型

    开个坑,接下来写完设计模式,其实这个东西一直很重要,但是自己却不重视,直到在很多地方吃了亏才想起来,我之前看起来设计模式有点"无所谓",好像代码知道具体的技术和知识点就可以包打天下 ...

  10. Android与MVC设计模式

    Android与MVC设计模式 写在前面,之前做过一段时间移动开发,后来因为工作原因搁浅了,最新重新拿起Android权威编程指南学习,顺道做个学习笔记. 首先呢,我想说无论是计算机科班出身还是培训班 ...

最新文章

  1. 外部样式表声明的样式并不会进入style对象
  2. 配置BGP本地优先级
  3. 【数据结构与算法】之深入解析“路径交叉”的求解思路与算法示例
  4. 学go语言能做什么工作?
  5. Executor源码解读
  6. jfinal-swagger让你的应用接口更加简单
  7. .NET C#研发的授权工具
  8. Ubuntu 通过apt安装VSCode
  9. Design Pattern: Adapter 模式 - Object Adapter
  10. snipaste安装和使用_snipaste替代品 amp; linux截图解决方案-截图、贴图工具Flameshot...
  11. atom编辑器 apm指令配置代理
  12. ArcEngine 相关-转载
  13. 50句形容美人的绝佳诗句,只看一眼,惊艳千年
  14. 生信技能树linux虚拟机,2019-08-21生信技能树Linux20题
  15. 东芝2303am维护清零_东芝打印机2303A怎样清零?
  16. 站长说说之seo三大标签
  17. 【最佳实践】行云管家数据库运维审计解决方案
  18. 我做过的最好的$ 4.90
  19. 【2016浴雨沐风】(第一篇)
  20. 如何选择智能车牌识别摄像机

热门文章

  1. java里css查找快捷键_CSS入门2—元素快捷键
  2. java解析getresponsebodyasstring_java读取网站内容的两种方法是什么呢?
  3. macOs下全局安装npm包的设置问题
  4. 2018 Multi-University Training Contest 7 - Age of Moyu
  5. BOM--location对象、history对象
  6. Hadoop(十五)MapReduce程序实例
  7. [BZOJ] 1634: [Usaco2007 Jan]Protecting the Flowers 护花
  8. Oracle的登陆问题和初级学习增删改查(省略安装和卸载)
  9. device not ready cuda
  10. 游戏框架View以及简单的运用