23种设计模式(0)——概述
概述
- 知道OO基础,并不足以让你设计出良好的OO系统。
- 良好的OO设计必须具备可复用、可扩充、可维护三个特性。
- 模式可以让我们建造出具有良好OO设计质量的系统。
- 模式被认为是历经验证的OO设计经验。
- 模式不是代码,而是针对设计问题的通用解决方案。你可把它们应用到特定的应用中。
- 模式不是被发明,而是被发现。
- 大多数的模式和原则,都着眼于软件变化的主题。
- 大多数的模式都允许系统局部改变独立于其他部分。
- 我们常把系统中会变化的部分抽出来封装。
设计原则
- 封装变化
- 多用组合,少用继承
- 针对接口编程,不针对实现编程
- 为交互对象之间的松耦合设计而努力
- 类应该对扩展开放,对修改关闭
- 依赖抽象,不要依赖具体类
- 只和朋友交谈
- 别找我,我会找你
- 类应该只有一个改变的理由
模式分类
设计模式根据目的可以分为三大类,分别是创建型设计模式、行为型设计模式以及结构型设计模式。 创建型模式涉及到将对象实例化,这类模式都提供一个方法,将客户从所需要实例化的对象中解藕。 行为型模式涉及到类和对象如何交互及分配职责。 结构型模式可以让你把类或对象组合到更大的结构中。
创建型设计模式【5种】
- 单例模式(Singleton)
- 构建模式(Builder)
- 原型模式(Prototype)
- 抽象工厂模式(Abstract Factory)
- 工厂方法模式(Factory Method)
行为设计模式【11种】
- 策略模式(Strategy)
- 状态模式(State)
- 责任链模式(Chain of Responsibility)
- 解释器模式(Interpreter)
- 命令模式(Command)
- 观察者模式(Observer)
- 备忘录模式(Memento)
- 迭代器模式(Iterator)
- 模板方法模式(Template Method)
- 访问者模式(Visitor)
- 中介者模式(Mediator)
结构型设计模式【7种】
- 装饰者模式(Decorator)
- 代理模式(Proxy)
- 组合模式(Composite)
- 桥连接模式(Bridge)
- 适配器模式(Adapter)
- 蝇量模式(Flyweight)
- 外观模式(Facade)
23种设计模式(0)——概述相关推荐
- 23种设计模式汇总概述
设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于 ...
- 23种设计模式——软件设计模式概述
文章目录 23种设计模式--软件设计模式概述 1.软件设计模式的产生背景 2.软件设计模式的概念与意义 2.1. 软件设计模式的概念 2.2. 学习设计模式的意义 3.软件设计模式的基本要素 4.23 ...
- java 23种设计模式详解
1. 软件设计模式意义 文章链接:http://c.biancheng.net/design_pattern/ 设计模式的本质是对面向对象设计原则运用,是对类的封装.继承和多态以及类的关联关系 ...
- Python之23种设计模式
目录篇: python相关目录篇 点击跳转 目录 设计模式介绍 GoF该书设计了23个设计模式 设计模式(Design Patterns)--可复用面向对象软件的基础 设计模式分类 1 创建型模式 2 ...
- 23种设计模式——装饰者模式
文章目录 23种设计模式--装饰者模式 1.装饰者模式概述 2.装饰者模式的结构 3.装饰者模式的实现 4.装饰者模式的应用场景 23种设计模式--装饰者模式 1.装饰者模式概述 背景 有些人为了早上 ...
- 【每天一个java设计模式(完)】 - 四万字实现23种设计模式(附示例源码)
什么是设计模式:[每天一个java设计模式(零)] - 设计模式基本概念及七大设计原则 创建型模式 工厂模式:[每天一个java设计模式(一)] - 工厂模式 抽象工厂模式: [每天一个java设计模 ...
- 23种设计模式-完结!
23种设计模式(Java版本) 总述 在大四的时候开始了作为一个码农的实习阶段,在进入公司之前,我只知道一些简单的工厂模式--比如简单工厂(对应还有"复杂"工厂).单例模式.代 ...
- 23种设计模式(一)
1. 软件设计模式意义 设计模式的本质是对面向对象设计原则运用,是对类的封装.继承和多态以及类的关联关系和组合关系的充分理解.优点: 可以提高程序员的思维能力.编程能力和设计能力 使程序更加标 ...
- 详解23种设计模式(基于Java)—— 结构型模式(三 / 五)
目录 3.结构型模式(7种) 3.1.代理模式 3.1.1.概述 3.1.2.结构 3.1.3.静态代理 3.1.4.JDK动态代理 3.1.5.CGLIB动态代理 3.1.6.三种代理的对比 3.1 ...
- 23种设计模式介绍以及在Java中的实现
本文章出自:blog.csdn.net/anxpp/artic- 若要查看原文请点击 文章中的示例源码在github上:github.com/anxpp/JavaD- 由于CSDN上的下拉翻页比较麻烦 ...
最新文章
- c#结合emgucv进行人脸检测_人脸识别与测温结合在办公场景有哪些应用?
- android onresume时view,android – 当对话框出现时不调用OnResume
- 可以输入值的下拉框(select和input的组合使用)
- Asp.net中Application Session Cookie ViewState Cache
- 文档隐写溯源技术分析
- 计算机四级等级考试网络工程师知识点-【操作系统原理+计算机网络两科完整】
- while 循环语句的使用
- fastapi+tortoise单元测试
- 虾皮的注册流程是什么?怎么注册虾皮?
- vue 中的 attribute 和 property
- X-Frame-Options响应头配置详解
- 新能源汽车VCU/HCU,BMS和MCU仿真测试系统实验室
- 【python--程序】printf格式化输出函数
- java计时器_Java 计时器
- java将本地图片复制添加水印并导出到本地
- 优信拍集团php面试题_【优信拍PHP高级工程师面试】问一些底层的问题和准则-看准网...
- 热力学定律文明逻辑人工智能······
- 计算机电源用什么端子,关于电源接线端子 你应该知道的一些知识
- 【转】为什么FPGA难学?是因为你还没搞清背后的根源
- tp5导入csv数据到mysql_tp5 Excel表格导入_tp5导出Excel