首页 > 代码库 > 设计模式学习(五)、抽象工厂模式
设计模式学习(五)、抽象工厂模式
1.抽象工厂模式的概念:
提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
2.抽象工厂模式的结构图
3.抽象工厂模式角色说明
抽象工厂(AbstractFactory)角色:所有的具体工厂都必须实现该接口,这个接口包含了一组方法来生产产品。
具体工厂(ConcreteFactory)角色:实现不同的产品家族。
4.抽象工厂模式的实现
<?php /** * Created by PhpStorm. * User: Administrator * Date: 16-10-18 * Time: 下午12:32 */ //抽象工厂类 abstract Class AbstractFactory { public abstract function createProductA(); public abstract function createProductB(); } //具体工厂类 Class ConcreteFactory1 extends AbstractFactory { public function createProductA(){ return new ProductA1(); } public function createProductB(){ return new ProductB1(); } } //具体工厂类 Class ConcreteFactory2 extends AbstractFactory { public function createProductA(){ return new ProductA2(); } public function createProductB(){ return new ProductB2(); } } //抽象产品类 interface AbstractProductA { public function description(); } //具体产品类 Class ProductA1 implements AbstractProductA { public function description(){ echo ‘this is ProductA1‘; } } //具体产品类 Class ProductA2 implements AbstractProductA { public function description(){ echo ‘this is ProductA2‘; } } //抽象产品类 interface AbstractProductB { public function description(); } //具体产品类 Class ProductB1 implements AbstractProductB { public function description(){ echo ‘this is ProductB1‘; } } //具体产品类 Class ProductB2 implements AbstractProductB { public function description(){ echo ‘this is ProductB2‘; } } //客户端使用 $f1 = new ConcreteFactory1(); $f1->createProductA(); $f1->createProductB(); $f2 = new ConcreteFactory2(); $f2->createProductA(); $f2->createProductB();
设计模式学习(五)、抽象工厂模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。