标签:logs factor cto ima 工厂方法模式 img 分享 标识 alt
最常用的实例化对象模式,用工厂方法替代了实例化对象.
1.简单工厂:
简单工厂通过构造时传入的标识来生产产品,不同产品都在同一个工厂中生产,这种判断会随着产品的增加而增加,给扩展和维护带来麻烦.简单工厂模式又称静态工厂方法模式.
UML图:
实例代码:
class A { public function playMp3($songList) { foreach($songList as $val) { echo $val . ‘.mp3‘; } } } class B { public function playWav($songList) { foreach($songList as $val) { echo $val . ‘.wav‘; } } } class Factory { public static function create($str) { switch ($str) { case ‘A‘: return new A(); case ‘B‘: return new B(); } } } $song = Factory::create(‘A‘); $song->playMp3(array(‘a.mp3‘)); //或者: class Factory { public static function createA(){ return new A(); } public static function createB(){ return new B(); } } $song = Factory::createA(); $song->playMp3(array(‘a.mp3‘));
2.工厂方法:
UML图:
示例代码:
class A { public function playMp3($songList) { foreach($songList as $val) { echo $val . ‘.mp3‘; } } } class B { public function playWav($songList) { foreach($songList as $val) { echo $val . ‘.wav‘; } } } // 为一类产品,创建一个工厂 class FactoryA { public function createA() { return new A(); } } // 为一类产品,创建一个工厂 class FactoryB { public function create() { return new B(); } } $a = new FactoryA(); $a->playMp3(array(‘a‘));
标签:logs factor cto ima 工厂方法模式 img 分享 标识 alt
原文地址:http://www.cnblogs.com/itfenqing/p/7782322.html