design mode(php)
前段时间看了下设计模式 参考,以及head first设计模式,简要如下
## OO原则 * 封装变化
* 多用组合,少用继承
* 针对接口编程,不针对实现编程
* 为交互对象之间的松耦合设计而努力
* 开闭原则,对扩展开放,对修改关闭
* 依赖倒置原则,依赖抽象,不要依赖具体类
* 最少知识原则,不让太多类耦合在一起,以免修改系统一部分,会影响到其他部分
* 单一责任原则,一个责任只指派给一个类 ## 模式类表 * 备忘录模式 备份对象某时刻的状态,存储在外部,需要时还原对象状态(打游戏中的存储游戏多个进度)
* 策略模式 多个算法,对外一个接口,用户可以根据需要切换(鸭子的叫声,吱吱叫,不会叫,咕咕叫)
* 模板方法模式 流程、系统、算法整体骨架固定,分步骤执行,部分步骤可供子类修改
* 观察者模式 一个对象需要根据另一个对象的改变作出一些操作,需要监控改变(微博订阅,公众号订阅)
* 工厂模式(简单工厂,工厂方法,抽象工厂) 工厂生产一类产品,客户从具体产品中解耦
* 单例模式(饱汉式,饿汉式)一个类只有一个实体
* 适配器模式 对象之间存在差异,使用一个转换,使得客户能像老接口那样使用新对象(三孔插座适配两空插座)
* 门面模式(外观模式) 集成复杂子系统,对外提供简单的使用方式(播放家庭影院)
* 装饰者模式 包含已有产品,在产品上附加操作(咖啡,加摩卡,加奶泡,加豆浆)
* 命令模式 解耦请求发出者和具体执行者
* 状态模式 对象中的操作根据对象的状态不同而不同,状态模式让修改局部化,某一状态中的对象操作修改不影响其他状态(糖果机的未投币,已投币,售糖果,售罄状态下的操作投币,转动曲柄,吐币操作)
* 迭代器模式 单一责任原则,提供一致的方式顺序访问聚合内的各个对象,而不暴露对象在聚合中的表示(数组,list,hashtable) ## 其他模式 * 组合模式(合成模式)允许将对象组合成树形结构来表现整体和部分层次结构,组合能让客户以一致的方式处理个别对象以及组合对象
* 责任链模式 创建一个对项链,请求过来时,对项链每个对象依序检查这个请求,或者处理这个请求,或者把请求转给对项链中下一个对象
* 生成器模式(建造者模式) 封装一个产品的构造过程,并允许按步骤构造
* 蝇量模式(享元模式) 使用一个类的一个实例能提供许多“虚拟实例”(通过保存虚拟实例的属性集合,虚拟实例类负责行为),目的通过共享减少实例开销
* 中介者模式 对象之间的沟通和控制通过一个中介完成,对象之间解耦
* 原型模式 创建给定类的实例的过程很昂贵或很复杂或者暂时不能确定具体的实例的时候,可以先创建对象的种类
* 访问者模式 当想为一个对象的组合增加新的能力,且封装并不重要时,可以使用访问者模式 php实现参见github
design mode(php)的更多相关文章
- 带你实现开发者头条APP(四)---首页优化(加入design包)
title: 带你实现开发者头条APP(四)---首页优化(加入design包) tags: design,Toolbar,TabLayout,RecyclerView grammar_cjkRuby ...
- 【知识必备】一文让你搞懂design设计的CoordinatorLayout和AppbarLayout联动,让Design设计更简单~
一.写在前面 其实博主在之前已经对design包的各个控件都做了博文说明,无奈个人觉得理解不够深入,所以有了这篇更加深入的介绍,希望各位看官拍砖~ 二.从是什么开始 1.首先我们得知道Coordina ...
- Android Material Design之 NavigationView侧滑界面自定义 随笔
一.侧滑界面Menu自定义: 在menu文件夹下新建activity_main_drawer.xml文件,自定义标题和icon: <?xml version="1.0" en ...
- Material Design Reveal effect(揭示效果) 你可能见过但是叫不出名字的小效果
Material Design Reveal effect(揭示效果) 你可能见过但是叫不出名字的小效果 前言: 每次写之前都会来一段(废)话.{心塞...} Google Play首页两个tab背景 ...
- 使用Design包实现QQ动画侧滑效果和滑动菜单导航
Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的Android Design Support Library,在这个supp ...
- 安卓Design包下的TextInputLayout和FloatingActionButton的简单使用
终于介绍到Design包的最后的东西了. 也很简单,一个是TextInputLayout. TextInputLayout作为一个父容器,包含一个新的EditText,可以给EditText添加意想不 ...
- 安卓Design包之AppBar和Toolbar的联用
前面讲了Design包的的CoordinatorLayout和SnackBar的混用,现在继续理解Design包的AppBar; AppBarLayout跟它的名字一样,把容器类的组件全部作为AppB ...
- 安卓Design包之超强控件CoordinatorLayout与SnackBar的简单使用
在前面的Design中,学习使用了TabLayout,NavigationView与DrawerLayout实现的神奇效果,今天就带来本次Design包中我认为最有意义的控件CoordinatorLa ...
- 安卓Design之NavigationView的使用
前面讲解了Design包下的TabLayout的使用,下面将带来NavagationView和DrawLayout以及toolbar的联动. 项目已经同步至:https://github.com/na ...
- 安卓Design包之TabLayout控件的简单使用
Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的Android Design Support Library,在这个supp ...
随机推荐
- EF6 学习笔记(五):数据库迁移及部署
EF6学习笔记总目录:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 原文地址:Code First Migrations and Deployment 原文主要讲两部分:开发环境下 ...
- hdu 1069 Monkey and Banana 【动态规划】
题目 题意:研究人员要测试猴子的IQ,将香蕉挂到一定高度,给猴子一些不同大小的箱子,箱子数量不限,让猩猩通过叠长方体来够到香蕉. 现在给你N种长方体, 要求:位于上面的长方体的长和宽 要小于 下面 ...
- eclipse经常出现——未响应!!!
现象:启动eclipse缓慢,启动完成经常出现未响应情况.偶然在打开一个项目时候,也出现未响应. 原因:虚拟内存不足,或者电脑本身内存不足.但是目前绝大多数PC而言,内存应该是充足的,因此可以修改虚拟 ...
- Shiro 基础教程
原文地址:Shiro 基础教程 博客地址:http://www.extlight.com 一.前言 Apache Shiro 是 Java 的一个安全框架.功能强大,使用简单的Java安全框架,它为开 ...
- 用jQuery修改右键菜单
概述 以前在网上找过屏蔽右键菜单的代码,也找过屏蔽F12的代码,今天无意之中看到别人的右键菜单很有意思,我也想来搞一个. 思路 建立一个菜单并且隐藏起来. 用window.oncontextmenu屏 ...
- [CocoaPods]使用Pod Lib创建
入门 我们将使用pod lib create引导过程来创建整个pod .那么让我们从初始命令开始: pod lib create MyLibrary 注意:要使用您自己的pod-template,您可 ...
- 再次理解HTTP请求过程[概念原理篇]
我曾多次阅读http协议,但是理解依然不深,在此,再次阅读,再次理解.加深两点:解析头部信息\r\n,分解头部和主体用\r\n\r\n.之所以一次请求会看到网络里有很多请求,是因为浏览器代替访问了多次 ...
- [转]SQL SERVER整理索引碎片测试
SQL SERVER整理索引碎片测试 SQL SERVER整理索引的方法也就这么几种,而且老是自作聪明的加入智能判断很不爽,还是比DBMS_ADVISOR差远了: 1SQL SERVER 2000/2 ...
- 使用create-react-app 快速构建 React 开发环境以及react-router 4.x路由配置
create-react-app 是来自于 Facebook,通过该命令我们无需配置就能快速构建 React 开发环境. create-react-app 自动创建的项目是基于 Webpack + E ...
- 写在19年初的后端社招面试经历(两年经验): 蚂蚁 头条 PingCAP
去年(18年)年底想出来看看机会,最后很幸运地拿到了 PingCAP,今日头条的 offer 以及蚂蚁金服的口头 offer.想着可以总结一下经验,分享一下自己这一段"骑驴找马"过 ...