<?php
header("Content-type:text/html;charset=utf-8");
/**
* 共同接口
*/interface db
{function conn();
}/**
* mysql类
*/class DbMysql implements db
{public function conn(){echo "连接上了mysql<br>";}
}/**
* sqlite类
*/class DbSqlite implements db
{public function conn(){echo "连接上了sqlite<br>";}
}/**
*
*/class Factory
{publicstatic function createDb($type){if ($type == ‘mysql‘) {$db = new DbMys...
二十三种设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 1 <?php2/* 3 * php设计模式——抽象工厂模式(Abs...
工厂模式(Factory)允许你在代码执行时实例化对象。它之所以被称为工厂模式是因为它负责“生产”对象。工厂方法的参数是
你要生成的对象对应的类名称。①抽象基类:类中定义抽象一些方法,用以在子类中实现
②继承自抽象基类的子类:实现基类中的抽象方法③工厂类:用以实例化对象eg: 简单工厂模式的初步实现<?php/*** 操作类* 因为包含有抽象方法,所以类必须声明为抽象类*/abstractclass Operation{//抽象方法不能包含函数体ab...
<?php
/*抽象工厂模式:提供一个创建一系统相关或相互依赖对象的接口,而无需指定它们具体的类* 创建型模式*///抽象小米工厂,能制造小米一,小米二
abstract class mifactory{abstract public function createmione();abstract public function createmitwo();
}
//具体工厂:生产白色的小米
class white extends mifactory{public function createmione(){return new whiteone();}public function createmitwo(){return new whit...
基本设计模式1.工厂模式//如果很多页面都 new 一个Database 对象,那么一旦Database作出改动,则需要在多个//页面进行相应的改动。而用工厂模式,只需要改动一个地方。namespaceIMooc;classFactory
{staticfunctioncreateDatabase(){$db = new Database();return$db;}
}').addClass('pre-numbering').hide();$(this).addClass('has-numbering').parent().append($numbering);for (i = 1; i ').text(i));};$numbering.fadeIn(1700);...
代码如下:<?php /** * 工厂方法模式 * * 定义一个用于创建对象的接口,让子类决定将哪一个类实例化,使用一个类的实例化延迟到其子类 */ /* class DBFactory { public static function create($type) { swtich($type) { case "Mysql": return new MysqlDB(); break; case "Postgre": return new PostgreDB(); break; case "Mssql": return new MssqlDB(); break; } } } */ class DBFactory { public static function create($type) {...
在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素而又不暴露该对象的内部表示,这就是PHP迭代器模式的定义。适用场景:访问一个聚合对象的内容而无需暴露它的内部表示支持对聚合对象的多种遍历为遍历不同的聚合结构提供一个统一的接口迭代器模式实例:<?php
class ConcreteIterator implements Iterator{private $position = 0;private $arr;function __construct(array $arr){$this->arr = $arr;}function rewind(){$th...
/** 工厂模式的例子 @link http://bbs.it-home.org*/abstract class Operation{abstract public function getValue($num1,$num2);public function getAttr(){return 1;}}class Add extends Operation{public function getValue($num1, $num2){return $num1+$num2;}}class Sub extends Operation{public function getValue($num1, $num2){return $num1-$num2;}}class Factory{public static function CreateObj($operation){switc...
本文介绍下,php设计模式中的三种模式,分别是单例模式、工厂模式与观察者模式,有需要的朋友参考下。一,单例模式
应用程序中只会有这个类的一个实例存在。
比如,单例模式只让一个对象去访问数据库,从而防止打开多个数据库连接。
一个单例类应包括以下几点:
和普通类不同,单例类不能被直接实例化,只能是由自身实例化。因此,要获得这样的限制效果,构造函数必须标记为private。
要让单例类不被直接实例化而能起到作用,就必须...
<?php/** * 一个事例 * * 一个农场,要向市场销售水果 * 农场里有三种水果 苹果、葡萄 * 我们设想:1、水果有多种属性,每个属性都有不同,但是,他们有共同的地方 | 生长、种植、收货、吃 * 2、将来有可能会增加新的水果、我们需要定义一个接口来规范他们必须实现的方法 * 3、我们需要获取某个水果的类,要从农场主那里去获取某个水果的实例,来知道如何生长、种植、收货、吃 *//** * 虚拟产品接口类 * 定义好需要实现...
1.工厂模式 主要作用是降低耦合度。 代码如下:abstract class Operation{ abstract public function getValue($num1,$num2); public function getAttr(){ return 1; } } class Add extends Operation{ public function getValue($num1, $num2){ return $num1+$num2; } } class Sub extends Operation{ public function getValue($num1, $num2){ return $num1-$num2; } } class Factory{ public static function CreateObj($operat...
抽象工厂模式(Abstact Factory)是一种常见的软件设计模式。该模式为一个产品族提供了统一的创建接口。当需要这个产品族的某一系列的时候,可以为此系列的产品族创建一个 具体的工厂类。
【意图】
抽象工厂模式提供一个创建一系统相关或相互依赖对象的接口,而无需指定它们具体的类【GOF95】
【抽象工厂模式结构图】【抽象工厂模式中主要角色】
抽象工厂(Abstract Factory)角色:它声明一个创建抽象产品对象的接口。通常以接口或抽...
抽象工厂模式(Abstact Factory)是一种常见的软件设计模式。该模式为一个产品族提供了统一的创建接口。当需要这个产品族的某一系列的时候,可以为此系列的产品族创建一个具体的工厂类。
一、意图
抽象工厂模式提供一个创建一系统相关或相互依赖对象的接口,而无需指定它们具体的类【GOF95】
二、抽象工厂模式结构图
三、抽象工厂模式中主要角色
抽象工厂(Abstract Factory)角色:它声明一个创建抽象产品对象的接口。通常以接口或...
一、意图
定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使用一个类的实例化延迟到其子类【GOF95】
二、工厂模式结构图三、工厂模式中主要角色
抽象产品(Product)角色:具体产品对象共有的父类或接口
具体产品(Concrete Product)角色:实现抽象产品角色所定义的接口,并且工厂方法模式所创建的每一个对象都是某具体产品对象的实例
抽象工厂(Creator)角色:模式中任何创建对象的工厂类都要实现这个接口,它...
本文实例讲述了PHP设计模式之工厂模式与单例模式实现方法。分享给大家供大家参考,具体如下:
设计模式简单说应对某类问题而设计的解决方式
工厂模式:应对需求创建相应的对象
class factory{function __construct($name){if(file_exists(./.$name..class.php)){return new $name;}else{die(not exist);}}
}单例模式:只创建一个对象的实例,不允许再创建实例,节约资源(例如数据库的连接)
class instance{public $val = 10;priv...