前段时间看了下设计模式 参考,以及head first设计模式,简要如下

## OO原则

* 封装变化
* 多用组合,少用继承
* 针对接口编程,不针对实现编程
* 为交互对象之间的松耦合设计而努力
* 开闭原则,对扩展开放,对修改关闭
* 依赖倒置原则,依赖抽象,不要依赖具体类
* 最少知识原则,不让太多类耦合在一起,以免修改系统一部分,会影响到其他部分
* 单一责任原则,一个责任只指派给一个类 ## 模式类表 * 备忘录模式 备份对象某时刻的状态,存储在外部,需要时还原对象状态(打游戏中的存储游戏多个进度)
* 策略模式 多个算法,对外一个接口,用户可以根据需要切换(鸭子的叫声,吱吱叫,不会叫,咕咕叫)
* 模板方法模式 流程、系统、算法整体骨架固定,分步骤执行,部分步骤可供子类修改
* 观察者模式 一个对象需要根据另一个对象的改变作出一些操作,需要监控改变(微博订阅,公众号订阅)
* 工厂模式(简单工厂,工厂方法,抽象工厂) 工厂生产一类产品,客户从具体产品中解耦
* 单例模式(饱汉式,饿汉式)一个类只有一个实体
* 适配器模式 对象之间存在差异,使用一个转换,使得客户能像老接口那样使用新对象(三孔插座适配两空插座)
* 门面模式(外观模式) 集成复杂子系统,对外提供简单的使用方式(播放家庭影院)
* 装饰者模式 包含已有产品,在产品上附加操作(咖啡,加摩卡,加奶泡,加豆浆)
* 命令模式 解耦请求发出者和具体执行者
* 状态模式 对象中的操作根据对象的状态不同而不同,状态模式让修改局部化,某一状态中的对象操作修改不影响其他状态(糖果机的未投币,已投币,售糖果,售罄状态下的操作投币,转动曲柄,吐币操作)
* 迭代器模式 单一责任原则,提供一致的方式顺序访问聚合内的各个对象,而不暴露对象在聚合中的表示(数组,list,hashtable) ## 其他模式 * 组合模式(合成模式)允许将对象组合成树形结构来表现整体和部分层次结构,组合能让客户以一致的方式处理个别对象以及组合对象
* 责任链模式 创建一个对项链,请求过来时,对项链每个对象依序检查这个请求,或者处理这个请求,或者把请求转给对项链中下一个对象
* 生成器模式(建造者模式) 封装一个产品的构造过程,并允许按步骤构造
* 蝇量模式(享元模式) 使用一个类的一个实例能提供许多“虚拟实例”(通过保存虚拟实例的属性集合,虚拟实例类负责行为),目的通过共享减少实例开销
* 中介者模式 对象之间的沟通和控制通过一个中介完成,对象之间解耦
* 原型模式 创建给定类的实例的过程很昂贵或很复杂或者暂时不能确定具体的实例的时候,可以先创建对象的种类
* 访问者模式 当想为一个对象的组合增加新的能力,且封装并不重要时,可以使用访问者模式 php实现参见github

最新文章

  1. 「视频直播技术详解」系列之七:直播云 SDK 性能测试模型
  2. Portable Basemap Server:多数据源多客户端的底图服务器
  3. mongodb在WEB开发中的应用与实践
  4. 一道印象深刻的面试题:String参数传递问题
  5. 必应缤纷桌面的必应助手-软件分析和用户市场需求之-----二.体验部分 Ryan Mao (毛宇11061171) (完整版本请参考团队博客)
  6. .NET GC机制学习笔记
  7. [Tips]解决HG之waiting for lock on repository
  8. PHP中我经常容易混淆的三组函数
  9. XML常用颜色值
  10. Powershell错误处理,try catch finally
  11. php制作数据字典
  12. 变更mysql数据库文件目录 Linux
  13. python全栈开发-Day5 集合
  14. ECS集群管理docker
  15. CF700E Cool Slogans
  16. html 的实践
  17. ssh-keygen 基本用法
  18. Mac为python2.7.10安装pip
  19. python简说(三)字典
  20. quartz 实例

热门文章

  1. Beta冲刺 (5/7)
  2. 【UWP】手动实现 WebAuthenticationBroker
  3. SpringBoot swagger-ui.html 配置类继承 WebMvcConfigurationSupport 类后 请求404
  4. React.js 三周 -- 入门到搭建团队基础项目
  5. 学习Python语言 基础语法:变量的基本使用
  6. 机器学习基石笔记:06 Theory of Generalization
  7. 13-02 Java 数组高级算法,Arrays类
  8. Spring Cloud Eureka 服务注册列表显示 IP 配置问题
  9. mysql 开发进阶篇系列 33 工具篇(mysqlbinlog日志管理工具)
  10. (剑指Offer)面试题45:圆圈中最后剩下的数字