简介
根据目的和范围,设计模式可以分为五类。按照目的分为:创建设计模式,结构设计模式,以及行为设计模式。按照范围分为:类的设计模式,以及对象设计模式。下面分别介绍
。
创建设计模式
创建设计模式(Creational patterns),用于创建对象时的设计模式。更具体一点,初始化对象流程的设计模式。当程序日益复杂时,需要更加灵活地创建对象,同时减少创建时的依赖。而创建设计模式就是解决此问题的一类设计模式。
结构设计模式
结构设计模式(Structural patterns),用于继承和接口时的设计模式。结构设计模式用于新类的函数方法设计,减少不必要的类定义,减少代码的冗余。
行为设计模式
行为设计模式(Behavio
继续阅读 »
原文地址:[PHP设计模式(三):封装][1]
简介
面向对象编程中,一切都是对象,对一个对象的封装,也成了面向对象编程中必不可少的部分。
和C/C++,Java,Python等语言一样,PHP也支持封装。
封装/Encapsulation
对事物的封装是指,将事物进行抽象后,提供抽象概念的实现的具体方法。
听起来很拗口,还是举鲸鱼的例子。
对于鲸鱼来说,需要吃东西这个行为,吃本身是一个抽象的概念,因为具体到怎么吃,是咀嚼和消化的过程,甚至如何咀嚼和消化也是不可见的。对外部而言,可见的只是吃这一个接口,如何吃、怎么吃,是被封装在了鲸鱼的实现中。甚至可以说,消化系统,被封装到了鲸鱼这个对象中,对外部不可见,仅仅鲸鱼自
继续阅读 »
简介
在[PHP设计模式(七):设计模式分类][2]中我们提到过创建设计模式(Creation
patterns),创建设计模式专注于设计对象(Object)和实例(Instance)的创建过程。
创建设计模式包括下面五种设计模式:
抽象工厂设计模式(Abstract Factory)
生成器模式(Builder)
工厂设计模式(Factory Method)
原型设计模式(Prototype Method)
单例设计模式(Singleton)
当程序逐渐扩展的时候,需要更多的新对象,新对象的创建不应该依赖于创建者,换句话说,新对象的创建过程,不应该依赖调用创建函数的对象。为了减少冗余,增加拓展性,工厂模式就是一种
继续阅读 »
简介
在[PHP设计模式(七):设计模式分类][2]中我们提到过结构设计模式(Structural
patterns),结构设计模式专注于设计对象(Object)和实例(Instance)的构建、组合过程。
结构设计模式包括下面七种设计模式:
适配器(Adapter)
桥接(Bridge)
合成(Composite)
装饰(Decorator)
外部(Facade)
轻量(Flyweight)
代理(Proxy)
请无视拗口的中文翻译。结构设计模式着重于低耦合、高复用、高可维护性、高拓展性的设计原则。
适配器模式
适配器模式是一种利用适配器将现有的实现,适配到已有接口的设计模式,最常见的例子就是变压器,将已
继续阅读 »
简介
俗话说,“PHP是世界上最好的语言”,因为PHP什么都能干。但是在PHP编程中,你是否会遇到这样的困惑:明明是相同的需求,但是之前写的代码却并不能重用,稍微修改不满足需求,大改又会让页面变样。
是的,由于PHP什么都能干,但是高度灵活性降低了代码的结构性。虽然可以利用三方框架来解决问题,但问题的根本在于缺乏设计模式。
本系列文章将由浅入深的介绍各种设计模式。
面向对象编程
面向对象编程,Object-Oriented Programming(OOP)作为最基本的设计模式并不是什么新鲜的话题,但是大部分新手的PHP编程都是在写流水账,各种拼接字符串,所以这里还是要提一下。
Object-Oriented Pro
继续阅读 »
在实现功能模块通常需要使用另外一个(或多个)组件(无法被当前使用者修改的功能模块)或服务(使用者通过同步或者异步请求的功能接口),依赖注入通过构造注入,允许代码从硬编码的依赖中解耦,使得在运行时或编译时可以修改的软件设计模式。
ps:组件在本地,服务在远程
more
依赖注入的两种方式
```php
namespace database;
class Database
{
protected $adapter;
/未使用依赖注入时,产生紧密的耦合/
public function __construct()
{
$this-adapter=new MysqlAdapter;
继续阅读 »
这两个星期,朋友结婚、公司活动、任务、岗位线座谈会,忙得不可开交,趁着周末,让自己闲下来写篇博文。回想起我在看设计模式的时候,经常看到书上经常会用到静态类和接口,但却不了解抽象类和接口的区别,俗话说,不了解透彻就无法运用到实际场景上(PS:这俗话当然是我自己编的~_~),那它们两者的区别在哪呢?
继续阅读 »