2-工厂模式
Posted lisongwei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2-工厂模式相关的知识,希望对你有一定的参考价值。
工厂模式概念:工厂模式是一种类,它具有为你创建对象的某些方法。你可以使用工厂类创建对象,而不用使用new。这样,如果你想要改变所创建的对象的类型,只需更改该工厂类即可。使用该工厂的所有代码会自动更改。
工厂模式分为三种:① 简单工厂模式 ② 工厂方法模式 ③ 抽象工厂模式
区别:
简单工厂模式:用来生产同一等级结构中的任意产品。(不能增加新产品)
工厂模式:用来生产同意等级结构中的固定产品。(支持增加任意产品)
抽象工厂模式:用来生产不同产品族的全部产品。(不能增加新的产品,但能增加产品族)
1、简单工厂模式
简单工厂模式又叫静态工厂方法模式,简单工厂模式是通过一个静态方法创建对象的
interface people function onWeek(); class Boy implements people function onWeek() echo ‘男孩打游戏<br>‘; class Girl implements people function onWeek() echo ‘女孩逛街<br>‘; class PeopleFactory static function createBoy() return new Boy(); static function createGirl() return new Girl(); $boy = PeopleFactory::createBoy(); $boy->onWeek(); $girl = PeopleFactory::createGirl(); $girl->onWeek();
输出结果:男孩打游戏
女孩逛街
2、工厂方法模式
interface People function onWeek(); class Boy implements People function onWeek() echo ‘男孩周末打游戏<br>‘; class Girl implements People function onWeek() echo ‘女孩周末逛街<br>‘; interface CreatePeople //将对象的创建抽象成一个接口,这是与简单工厂模式的本质区别。这样增加了扩展性 function create(); class FactoryBoy implements CreatePeople function create() return new Boy(); class FactoryGirl implements CreatePeople function create() return new Girl(); class Client function test() $boyFactory = new FactoryBoy(); $boy = $boyFactory->create(); $boy->onWeek(); $girlFactory = new FactoryGirl(); $girl = $girlFactory->create(); $girl->onWeek(); $f = new Client(); $f->test();
输出结果:男孩周末打游戏
女孩周末逛街
3、抽象工厂模式
interface People function onWeek(); class Oboy implements People function onWeek() echo ‘男孩周末外出打球<br>‘; class Iboy implements People function onWeek() echo ‘男孩周末宅宿舍打游戏<br>‘; class Ogirl implements people function onWeek() echo ‘女孩周末外出逛街<br>‘; class Igirl implements people function onWeek() echo ‘女孩周末宅宿舍化妆<br>‘; interface CreatePeople //将对象的创建抽象成一个接口,这里是本质区别所在 function createOpen(); function createInter(); class FactoryBoy implements CreatePeople function createOpen() return new Oboy(); function createInter() return new Iboy(); class FactoryGirl implements CreatePeople function createOpen() return new Ogirl(); function createInter() return new Igirl(); class Client function test() $BoyFactory = new FactoryBoy(); $oboy = $BoyFactory->createOpen(); $oboy->onWeek(); $iboy = $BoyFactory->createInter(); $iboy->onWeek(); $GirFactory = new FactoryGirl(); $ogirl = $GirFactory->createOpen(); $ogirl->onWeek(); $igirl = $GirFactory->createInter(); $igirl->onWeek(); $f = new Client(); $f->test();
输出结果: 男孩周末外出打球
男孩周末宅宿舍打游戏
女孩周末外出逛街
女孩周末宅宿舍化妆
以上是关于2-工厂模式的主要内容,如果未能解决你的问题,请参考以下文章
设计模式工厂方法模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )
Java设计模式图文代码案例详解Java五大创建者模式 建造者原型(抽象)工厂单例模式