您的位置:首页 > 编程语言 > PHP开发

【笔记】设计模式(PHP) - [02]

2015-11-25 23:22 435 查看
《Learning PHP Design Patterns》

面向对象编程的首要原则之一:单一职责原则。这表示一个类应当只有一个职责。

在OOP和设计模式中,抽象类可以为项目提供一种组织机制。
尽管不能在接口中包含变量,但是可以包含常量。
封装就是划分一个抽象的诸多元素的过程,这些元素构成该抽象的结构和行文;封装的作用就是将抽象的契约接口与实现分离。
把一个复杂的大问题模块化为多个可解决的子问题,就可以利用封装来得到这些较小的抽象,并对它们完成划分。
OOP设计建议使用获取方法(getters)和设置方法(setters),也可分别称为存取方法(accessors)和修改方法(mutators)。
从某种程度上讲,设计模式的目的是建立对象间的通信链路。很多所谓的OOP并没有正确使用获取方法和设置方法,允许公开访问获取方法和设置方法只会破坏封装。
保持封装同时保持对象(类)之间通讯的过程正是设计模式的一个工作。
要修改一个过程,只需要重新组织消息序列,而不是改变一个过程(procedure)。
继承有助于为程序中包含的不同类建立一种结构。不过,为了保证类之间的松绑定,通常会继承抽象类,而且是浅继承,只有一层子类。
多态的真正价值在于,可以调用有相同接口的对象来完成不同的工作。

设计模式基本原则

第一个原则:按接口而不是按实现来编程。(对于PHP来说有些困难)

第二个原则:优先选择对象组合而不是类继承。

接口这个概念是之方法及其签名,而不是关键字interface。
扩展一个抽象类就类似于实现一个接口。
类型提示可以帮助你尽可能遵守第一个设计模式原则。
简单的例子看起来好像继承更胜一筹,但在较大的程序中,组合可以避免维护多个继承层次上的各个子类,而且还可以避免可能导致的错误。
大多数设计模式同时包括继承和组合,设计模式方法建议使用浅继承,另外尽量使用多个类的功能。

把设计模式作为备忘录

要确定何时使用委托以及如何使用,应当包含多少继承,以及如何确保OOP编程中的重用时,可用把设计模式看做是一个备忘录。可用迅速查看一般设计,这些设计往往使用类图展示需要在哪里使用继承和组合。

设计模式的组织:设计模式按作用和范围来组织。

按作用{创建型; 结构型; 行为型}

按范围{类; 对象}

创建型:创建对象的模式。这些模式是对实例化过程的抽象。
结构型:组合结构应当保证结构化。结构型类模式采用继承来组合接口或实现。结构型对象模式则描述了组合对象来建立新功能的方法。
行为型:模式的核心是算法和对象之间职责的分配。绝大多数模式都是行为型对象。
类模式:重点在于类及其子类的关系。类模式是静态的,在编译时已经固定了。因为类模式中的关系是通过继承建立的,所以在各模式中,类范围只占一小部分。
对象模式:也会使用继承,但与类模式的区别在于,对象模式强调的是可以在运行时改变的对象,因此这些模式更具有动态性。

选择设计模式:设计模式不是模板,而是策略。

有些人误以为设计模式就是一些毫无变化的”标准答案“,要严格按他要求的去编程。

与框架相比,设计模式是体系结构中更小的元素,也更为抽象。

设计模式作用、范围和变化

作用

范围模式名可能变化的方面
创建型工厂方法实例化对象的子类
对象原型实例化对象的类
结构型适配器对象的接口
对象适配器对象职责而不派生子类
装饰器
行为型模板方法算法中的步骤
对象状态对象状态
对象策略算法
对象职责链可以满足请求的对象
对象观察者依赖于其他对象的对象数,当前可以有多少个依赖对象
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: