设计模式是对面向对象设计中反复出现的问题的解决方案。以下是《大道PHP:LAMP+Zend+开源框架整合开发与实战》第10章介绍的几种常用设计模式。包括:简单工厂模式、单元素模式、观察者模式、命令模式、策略模式以及MVC模式。
一、简单工厂模式
简单工厂模式(Simple Factory Pattern)又被称为静态工厂方法模式(Static Factory Method Pattern),具体指创建一个类似于工厂的类,通过对该类中成员方法的调用返回不同类型的对象。
1、类图
这里,抽象类Product定义了一个获取产品名称的成员方法getName(),Product抽象类的具体实现为之类ProductA和之类ProductB。工厂类ProductFactory 用来决定在什么时候创建并返回哪个产品类的实例化对象,使用时,只需把参数传递给其他成员的create()方法,就可以创建Product类的对象,无须考虑具体的生产细节。
2、代码
<?php //抽象类Product abstract class Product { abstract function getName(); } //具体类ProductA class ProductA extends Product { public function getName() { echo "I am ProductA"; } } //具体类ProductB class ProductB extends Product { public function getName() { echo "I am ProductB"; } } // 工厂类ProductFactory class ProductFactory { static function create($name) { switch ($name) { case "A": return new ProductA(); case "B": return new ProductB(); } } } $product=ProductFactory::create("A"); $product->getName(); echo "<br />"; $product=ProductFactory::create("B"); $product->getName();