【笔记】设计模式(PHP) - [02]
2015-11-25 23:22
435 查看
《Learning PHP Design Patterns》
面向对象编程的首要原则之一:单一职责原则。这表示一个类应当只有一个职责。
在OOP和设计模式中,抽象类可以为项目提供一种组织机制。
尽管不能在接口中包含变量,但是可以包含常量。
封装就是划分一个抽象的诸多元素的过程,这些元素构成该抽象的结构和行文;封装的作用就是将抽象的契约接口与实现分离。
把一个复杂的大问题模块化为多个可解决的子问题,就可以利用封装来得到这些较小的抽象,并对它们完成划分。
OOP设计建议使用获取方法(getters)和设置方法(setters),也可分别称为存取方法(accessors)和修改方法(mutators)。
从某种程度上讲,设计模式的目的是建立对象间的通信链路。很多所谓的OOP并没有正确使用获取方法和设置方法,允许公开访问获取方法和设置方法只会破坏封装。
保持封装同时保持对象(类)之间通讯的过程正是设计模式的一个工作。
要修改一个过程,只需要重新组织消息序列,而不是改变一个过程(procedure)。
继承有助于为程序中包含的不同类建立一种结构。不过,为了保证类之间的松绑定,通常会继承抽象类,而且是浅继承,只有一层子类。
多态的真正价值在于,可以调用有相同接口的对象来完成不同的工作。
设计模式基本原则:
第一个原则:按接口而不是按实现来编程。(对于PHP来说有些困难)
第二个原则:优先选择对象组合而不是类继承。
接口这个概念是之方法及其签名,而不是关键字interface。
扩展一个抽象类就类似于实现一个接口。
类型提示可以帮助你尽可能遵守第一个设计模式原则。
简单的例子看起来好像继承更胜一筹,但在较大的程序中,组合可以避免维护多个继承层次上的各个子类,而且还可以避免可能导致的错误。
大多数设计模式同时包括继承和组合,设计模式方法建议使用浅继承,另外尽量使用多个类的功能。
把设计模式作为备忘录
要确定何时使用委托以及如何使用,应当包含多少继承,以及如何确保OOP编程中的重用时,可用把设计模式看做是一个备忘录。可用迅速查看一般设计,这些设计往往使用类图展示需要在哪里使用继承和组合。
设计模式的组织:设计模式按作用和范围来组织。
按作用{创建型; 结构型; 行为型}
按范围{类; 对象}
创建型:创建对象的模式。这些模式是对实例化过程的抽象。
结构型:组合结构应当保证结构化。结构型类模式采用继承来组合接口或实现。结构型对象模式则描述了组合对象来建立新功能的方法。
行为型:模式的核心是算法和对象之间职责的分配。绝大多数模式都是行为型对象。
类模式:重点在于类及其子类的关系。类模式是静态的,在编译时已经固定了。因为类模式中的关系是通过继承建立的,所以在各模式中,类范围只占一小部分。
对象模式:也会使用继承,但与类模式的区别在于,对象模式强调的是可以在运行时改变的对象,因此这些模式更具有动态性。
选择设计模式:设计模式不是模板,而是策略。
有些人误以为设计模式就是一些毫无变化的”标准答案“,要严格按他要求的去编程。
与框架相比,设计模式是体系结构中更小的元素,也更为抽象。
设计模式作用、范围和变化
面向对象编程的首要原则之一:单一职责原则。这表示一个类应当只有一个职责。
在OOP和设计模式中,抽象类可以为项目提供一种组织机制。
尽管不能在接口中包含变量,但是可以包含常量。
封装就是划分一个抽象的诸多元素的过程,这些元素构成该抽象的结构和行文;封装的作用就是将抽象的契约接口与实现分离。
把一个复杂的大问题模块化为多个可解决的子问题,就可以利用封装来得到这些较小的抽象,并对它们完成划分。
OOP设计建议使用获取方法(getters)和设置方法(setters),也可分别称为存取方法(accessors)和修改方法(mutators)。
从某种程度上讲,设计模式的目的是建立对象间的通信链路。很多所谓的OOP并没有正确使用获取方法和设置方法,允许公开访问获取方法和设置方法只会破坏封装。
保持封装同时保持对象(类)之间通讯的过程正是设计模式的一个工作。
要修改一个过程,只需要重新组织消息序列,而不是改变一个过程(procedure)。
继承有助于为程序中包含的不同类建立一种结构。不过,为了保证类之间的松绑定,通常会继承抽象类,而且是浅继承,只有一层子类。
多态的真正价值在于,可以调用有相同接口的对象来完成不同的工作。
设计模式基本原则:
第一个原则:按接口而不是按实现来编程。(对于PHP来说有些困难)
第二个原则:优先选择对象组合而不是类继承。
接口这个概念是之方法及其签名,而不是关键字interface。
扩展一个抽象类就类似于实现一个接口。
类型提示可以帮助你尽可能遵守第一个设计模式原则。
简单的例子看起来好像继承更胜一筹,但在较大的程序中,组合可以避免维护多个继承层次上的各个子类,而且还可以避免可能导致的错误。
大多数设计模式同时包括继承和组合,设计模式方法建议使用浅继承,另外尽量使用多个类的功能。
把设计模式作为备忘录
要确定何时使用委托以及如何使用,应当包含多少继承,以及如何确保OOP编程中的重用时,可用把设计模式看做是一个备忘录。可用迅速查看一般设计,这些设计往往使用类图展示需要在哪里使用继承和组合。
设计模式的组织:设计模式按作用和范围来组织。
按作用{创建型; 结构型; 行为型}
按范围{类; 对象}
创建型:创建对象的模式。这些模式是对实例化过程的抽象。
结构型:组合结构应当保证结构化。结构型类模式采用继承来组合接口或实现。结构型对象模式则描述了组合对象来建立新功能的方法。
行为型:模式的核心是算法和对象之间职责的分配。绝大多数模式都是行为型对象。
类模式:重点在于类及其子类的关系。类模式是静态的,在编译时已经固定了。因为类模式中的关系是通过继承建立的,所以在各模式中,类范围只占一小部分。
对象模式:也会使用继承,但与类模式的区别在于,对象模式强调的是可以在运行时改变的对象,因此这些模式更具有动态性。
选择设计模式:设计模式不是模板,而是策略。
有些人误以为设计模式就是一些毫无变化的”标准答案“,要严格按他要求的去编程。
与框架相比,设计模式是体系结构中更小的元素,也更为抽象。
作用 | 范围 | 模式名 | 可能变化的方面 |
---|---|---|---|
创建型 | 类 | 工厂方法 | 实例化对象的子类 |
对象 | 原型 | 实例化对象的类 | |
结构型 | 类 | 适配器 | 对象的接口 |
对象 | 适配器 | 对象职责而不派生子类 | |
装饰器 | |||
行为型 | 类 | 模板方法 | 算法中的步骤 |
对象 | 状态 | 对象状态 | |
对象 | 策略 | 算法 | |
对象 | 职责链 | 可以满足请求的对象 | |
对象 | 观察者 | 依赖于其他对象的对象数,当前可以有多少个依赖对象 |
相关文章推荐
- mac下xampp运行thinkphp错误403解决方案
- [转]Ubuntu 用vsftpd 配置FTP服务器
- 快速上手php:使用PhpStrom调试php
- php生成mysql数据字典
- 快速上手php:使用PhpStrom部署项目
- laravel事件创建以及使用
- PHP数组的遍历
- 简单邮件传送协议SMTP
- PHP flock 文件锁详细介绍
- laravel的依赖注入
- 50个提高PHP编程效率的方法
- phpstorm快捷键
- PHPCMS v9支付宝免签约即时到账接口
- 学习php有感
- PHP配置详解
- PHP 预定义常量 $_SERVER
- PHP - session编码和解码
- php.ini xdebug
- 【笔记】设计模式(PHP) - [01]
- php函数long2ip与ip2long()