设计模式(一)简单工厂 PHP(Simple Factory For PHP)
最近天气变化无常,身为程序猿的寡人!~终究难耐天气的挑战,病倒了,果然,程序猿还需多保养自己的身体,有句话这么说:一生只有两件事能报复你:不够努力的辜负和过度消耗身体的后患。
设计模式——简单工厂 (Simple Factory)又称静态工厂方法模式(Static Factory Method Pattern)
简单工厂的作用是实例化对象,而不需要客户了解这个对象属于哪个具体的子类。简单工厂实例化的类具有相同的接口或者基类,在子类比较固定并不需要扩展时,可以使用简单工厂,一定程度上可以很好的降低耦合度。
模式的问题:你如何能轻松方便地构造对象实例,而不必关心构造对象实例的细节和复杂过程呢?
平时项目的例子:比如现在大家几乎都会用的网站支付功能,支付形式大致包括:支付宝、微信、银联等。 这时候我们通过一个管理类(工厂类)来创建对象,这样创建者不需要去费尽心思了解对象实例的细节和复杂过程了。
产品类:
<?php
/**
* 水果系列
*
*/
abstract Class Fruit{
abstract function plant(); //种植方法
}
Class Apple extends Fruit{
function plant() {
echo "Apple planting";
}
}
Class banana extends Fruit{
function plant(){
echo "Banana planting";
}
}
?> 工厂类:
/**
*
* 创建水果的工厂类
*/
class Factory {
static function createFruit($type){
switch ($type) {
case apple:
return new Apple();
case banana:
return new Banana();
//....
}
} 客户类:
/**
*
* 客户通过工厂获取水果
*/
class Customer {
private $fruit;
function getFruit($type){
$this->fruit = Factory::createFruit($type);
}
} 先归类你的产品(需求)找到共同点和特征,然后根据共同的地方 创建 各自的产品类, 这时候如果没有 直接同个客户类去调用每一个 产品类,那么耦合度会大大增高(在需求变动的时候), 这时候创建一个工厂类统一管理产品类,再通过客户类调用。 那么可以很好的管理代码并一定程度上的解耦。
如果有什么疑问或者讲错的地方,欢迎大家留言。
相关推荐
繁殇落幕 2019-06-28
软件设计 2017-05-03
软件设计 2017-03-22
82602411 2016-11-22
Ingram 2019-11-03
liuzhenyu0 2011-07-05
anqier 2019-06-27
scnjl0 2017-04-29
blind 2016-07-29
Vermont 2017-10-16
yunhuaikong 2015-08-09
LazyCat 2014-10-11
pythontty 2019-01-22
蔷薇部落 2011-12-22
liaycn 2011-07-21
liyongkuan 2016-03-16
PHP100 2019-03-28
PHP100 2019-03-27
PHP100 2019-03-27