1月
24
本来向把这些文章翻译过来的,一直太忙,时间顾不上。简单的总结和说明一下,就像是做点笔记和说明。
The Singleton and Factory Patterns in PHP: Building object-oriented forms (建立面向对象的表单)
The Singleton and Factory Patterns in PHP: designing an object factory (实现工厂)
The Singleton and Factory Patterns in PHP: a rendering-capable factory class (认识工厂模式)
The Singleton and Factory Patterns in PHP: Working With Singletons (使用单例模式)
The Singleton and Factory Patterns in PHP: Building a Form Generator Class (建立表单生成类)
rollenc笔记:
1。单例:在系统中只需要一个实例是可以使用单例模式。你一天可能需要吃多个苹果,而你只需要一把水果刀。而且,没有水果刀就去拿一把,已经有的话就直接用,不需要忽略以前的再拿新的。那么水果刀就可以作为一个单例。
在建立数据库连接是常常需要使用单例模式。在MVC系统中,也常常使用单例来调用module。在简单的代码如下:
class Db
{
/**
* @access private
*/
function Db()
{
$this->conn = mysql_connect(DB_HOST, DB_USER, DB_PWD);
if(!$this->conn)
{
die("Connect DB error!");
}
mysql_select_db(DB_NAME);
}
/**
* 使用 $db = & Db::getInstance() 来构建一个DB连接,而不是使用$db = new Db();
* 如果使用php5,可以把Db的构造函数__construct声明为private,这样在程序级强行在程序只能使用getInstance来构建,
* 但考虑兼容的代码,在php4中就只能简单的靠程序员自己来自觉遵守了。
*/
function & getInstance()
{
if (!DB :: $instance)
{
DB :: $instance = new Db();
}
return DB :: $instance;
}
/**
*其他的函数等等
*/
function query($query)
{
//Your code here
}
}
?>
2。简单工厂:文中提到的工厂属于简单工厂模式的范畴。有几个类继承于同一个类或者实现了相同的接口(文中并没有接口和继承,但是可以知道几个)。而在运行前,你并不知道你需要那一个类,那么,。你可能需要一个工厂。比如:
<?php
$fruitName = $_GET['name'];
$fruit = FruitFactory::getFruit($fruitName);
$fruit->output();
?>
在运行前,我们并不知道,我们需要建立一个什么样的Fruit对象,那么我们就把参数$_GET['name']给FruitFactory,让他来生产一个相应的Fruit对象出来。然后,我们再继续进行下面操作。我提到上面的接口的概念,也是因为后面的调用是相同的,只有具备了这些接口的对象(类)才能继续正确的运行。
The Singleton and Factory Patterns in PHP: Building object-oriented forms (建立面向对象的表单)
The Singleton and Factory Patterns in PHP: designing an object factory (实现工厂)
The Singleton and Factory Patterns in PHP: a rendering-capable factory class (认识工厂模式)
The Singleton and Factory Patterns in PHP: Working With Singletons (使用单例模式)
The Singleton and Factory Patterns in PHP: Building a Form Generator Class (建立表单生成类)
rollenc笔记:
1。单例:在系统中只需要一个实例是可以使用单例模式。你一天可能需要吃多个苹果,而你只需要一把水果刀。而且,没有水果刀就去拿一把,已经有的话就直接用,不需要忽略以前的再拿新的。那么水果刀就可以作为一个单例。
在建立数据库连接是常常需要使用单例模式。在MVC系统中,也常常使用单例来调用module。在简单的代码如下:
class Db
{
/**
* @access private
*/
function Db()
{
$this->conn = mysql_connect(DB_HOST, DB_USER, DB_PWD);
if(!$this->conn)
{
die("Connect DB error!");
}
mysql_select_db(DB_NAME);
}
/**
* 使用 $db = & Db::getInstance() 来构建一个DB连接,而不是使用$db = new Db();
* 如果使用php5,可以把Db的构造函数__construct声明为private,这样在程序级强行在程序只能使用getInstance来构建,
* 但考虑兼容的代码,在php4中就只能简单的靠程序员自己来自觉遵守了。
*/
function & getInstance()
{
if (!DB :: $instance)
{
DB :: $instance = new Db();
}
return DB :: $instance;
}
/**
*其他的函数等等
*/
function query($query)
{
//Your code here
}
}
?>
2。简单工厂:文中提到的工厂属于简单工厂模式的范畴。有几个类继承于同一个类或者实现了相同的接口(文中并没有接口和继承,但是可以知道几个)。而在运行前,你并不知道你需要那一个类,那么,。你可能需要一个工厂。比如:
<?php
$fruitName = $_GET['name'];
$fruit = FruitFactory::getFruit($fruitName);
$fruit->output();
?>
在运行前,我们并不知道,我们需要建立一个什么样的Fruit对象,那么我们就把参数$_GET['name']给FruitFactory,让他来生产一个相应的Fruit对象出来。然后,我们再继续进行下面操作。我提到上面的接口的概念,也是因为后面的调用是相同的,只有具备了这些接口的对象(类)才能继续正确的运行。
Defined tags for this entry: 设计模式

0 引用