文档章节

设计模式概念总结

Mercy_丶
 Mercy_丶
发布于 2017/02/24 16:30
字数 527
阅读 8
收藏 1

模式: 在某种情境瞎,针对某问题的解决方案。(重复出现的问题和可复用的解决方案)
能不用设计模式解决问题就不用设计模式。

##设计原则

  1. 最少知识原则。
  1. 使用设计模式时需要看具体的情况而定,能用设计原则解决的问题就不用模式,不要为了使用模式而使用模式。
  2. 封装变化。
  3. 多用组合,少用继承。
  4. 针对接口编程,不针对实现编程。
  5. 为交互对象之间的松耦合而努力。
  6. 类应该对扩展开放对修改关闭。
  7. 依赖抽象,不要依赖具体类。
  8. 之和朋友交谈。
  9. 不要找我,我会找你。
  10. 类应该只有一个改变的理由。

###策略模式

定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户.

###观察者设计模式

定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖这都会收到通知并自动更新.

###装饰者模式

动态地将责任附加到对象上.想要扩展功能,装饰者提供有别于继承的另一种选择.
InputStream in = new BufferedInputStream(new FileInputStream(file));//

###工厂方法模式

定义了一个创建对象的接口,但由子类决定要实例化的是哪一个.工厂方法让类把实例化推迟到子类.

###命令模式

将请求封装成对象,这可以让你使用不同的请求,队列或者日志请求来参数化其他对象.命令模式也可以支持撤销操作.

###适配器模式

实现看似不可能做到的事情.
将两个本来不兼容的模块可以在一起正常工作.

###代理模式

为另一个对象提供一个替身或者站位符一访问这个对象。以便控制客户对对象的访问。

© 著作权归作者所有

共有 人打赏支持
Mercy_丶
粉丝 7
博文 39
码字总数 15485
作品 0
私信 提问
观察者模式 vs 发布-订阅模式

我曾经在面试中被问道,“观察者模式和发布订阅模式的有什么区别?” 我迅速回忆起“Head First设计模式”那本书: 发布 + 订阅 = 观察者模式 “我知道了,我知道了,别想骗我” 我微笑着回答...

缪宇
06/29
0
0
JavaScript常用设计模式

设计模式 设计模式是一种在长时间的经验与错误中总结出来可服用的解决方案。 设计模式主要分为3类: 创建型设计模式:专注于处理对象的创建 Constructor构造器模式,Factory工厂模式,Singl...

a独家记忆
07/13
0
0
Javascript设计模式与开发实践详见(一:单例模式)

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

littl_Prince
2016/04/05
0
0
JavaScript设计模式系列三之单例模式(附案例源码)

文章初衷 设计模式其实旨在解决语言本身存在的缺陷 目前javaScript一些新的语法特性已经集成了一些设计模式的实现, 大家在写代码的时候,没必要为了用设计模式而去用设计模式, 那么我这边为什...

小钱钱阿圣
2017/09/22
0
0
代理模式(Proxy Pattern):动态代理 - 最易懂的设计模式解析

前言 今天我来全面总结开发中最常用的设计模式 - 代理模式中的动态代理模式 其他设计模式介绍 1分钟全面了解“设计模式” 单例模式(Singleton) - 最易懂的设计模式解析 简单工厂模式(Sim...

Carson_Ho
04/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux学习-1031(rsync同步工具 上)

10.28 rsync工具介绍 10.29/10.30 rsync常用选项 10.31 rsync通过ssh同步 一、 rsync工具介绍 rsync是一个同步工具,在日常的运维中常会用到。它可以本地同步,也实现可以远程两台机器同步。...

wxy丶
1分钟前
0
0
python实战一期:第一天

1. 为什么学习python 1.1 为什么要学Python? Python第一是个非常牛B的脚本语言,能满足绝大部分自动化运维的需求,又能做后端C/S架构,又能用WEB框架快速开发出高大上的Web界面,只有当你自...

laoba
3分钟前
0
0
Java并发编程学习三:线程同步的关键字以及理解

上篇文章中介绍了Java线程的带来的问题与内存模型中介绍了线程可能会引发的问题以及对应Java的内存模型,顺带介绍了Volatile和Sychronized关键字。今天对Java中涉及到的常见的关键类和关键字...

JerryLin123
10分钟前
0
0
我用代码来给你们分析一个赚钱的技巧

赚钱是个俗气的话题,但又是人人都绕不开的事情。我今天来“科学”地触碰下这个话题。 谈赚钱,就会谈到理财、投资,谈到炒股。有这样一个笑话: 问:如何成为百万富翁? 答:带一千万进入股...

crossin
10分钟前
0
0
spring MatchingBean应用

1、编写接口FactoryList import java.util.List;public interface FactoryList<E extends MatchingBean<K>, K> extends List<E> { E getBean(K factor); List<E> getBeanLi......

重城重楼
23分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部