设计模式学习(五)、抽象工厂模式

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();
时间: 2024-08-26 08:52:13

设计模式学习(五)、抽象工厂模式的相关文章

设计模式学习03—抽象工厂模式

1.动机与定义 工厂模式中,一个工厂仅仅能提供一个或一类产品,当产品种类较多,形成产品系列(比方我们要创建跨平台的button,菜单,文本框等等一系列GUI控件: 单纯使用工厂模式会产生大量工厂,并且后期维护也不方便,我们能够从产品中找到规律,假设产品等级相对固定,以后仅仅会新增产品族,那么我们就能够把整个产品族放到一个工厂创建,以后新增其它系统产品族也很方便,例如以下图: 这样的模式就是抽象工厂,工厂方法模式针对的是一个产品等级结构,而抽象工厂模式则须要面对多个产品等级结构,一个工厂等级结构能

设计模式学习-抽象工厂模式

1.定义 提供接口,创建一系列相关或独立的对象,而不指定这些对象的具体类. 2.类图 3.代码示例 1 package com.zhaoyangwoo.abstractfactory; 2 3 /** 4 * Created by john on 16/5/2. 5 * @author wuzhaoyang 6 * <p> 7 * 抽象工厂:多个抽象产品类,派生出多个具体产品类:一个抽象工厂类,派生出多个具体工厂类:每个具体工厂类可创建多个具体产品类的实例. 8 * 即提供一个创建一系列相关或

设计模式学习之抽象工厂模式

抽象工厂模式定义:Provide an interface for creating families of related or dependent objects without specifying their concrete classes. (为创建一组相关或互相依赖的对象提供一个接口,而且无需指定他们的具体类) 上一章学习了工厂模式,这两个模式有很大的相似的地方,但是使用的情景不一样,所以要采用不一样方式.对比下这两个模式: 工厂模式                       

Java设计模式学习记录-抽象工厂模式

前言 上篇博客介绍了简单工厂模式和工厂方法模式,这次介绍抽象工厂模式,抽象工厂模式和工厂方法模式的区别在于需要创建对象的复杂程度上. 抽象工厂模式 抽象工厂模式是围绕着一个超级工厂创建其他工厂.这个超级工厂被称为其他工厂的工厂,主要是为了解决接口选择问题. 举例说明: 还是继续上篇用户使用手的例子,现在生产手机的工厂发现,不同的手机使用的配件也不相同,需要单独的生产配件.例如iphonX使用的原深感摄像头,以及OLED显示屏,而iphone8使用的全新感光元件组成的摄像头,以及视网膜高清显示屏.

设计模式学习笔记--抽象工厂模式

1 using System; 2 3 namespace AbstractFactory 4 { 5 /// <summary> 6 /// 作者:bzyzhang 7 /// 时间:2016/5/28 10:23:20 8 /// 博客地址:http://www.cnblogs.com/bzyzhang/ 9 /// User说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 10 /// </summary> 11 public class Use

设计模式学习(二)-简单工厂模式

---恢复内容开始--- 简单工厂设计模式 简单工厂模式定义: 简单工厂设计模式又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式.在简单工厂模式中,可以根据参数的不同返回不同类的实例.简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 简单工厂主要分为如下几个角色 抽象产品(abstract product):为所有具体产品的抽象表现,一般为抽象类 具体产品(product):为抽象产品的具体实现 生成产品工厂(facto

设计模式C++实现——抽象工厂模式

模式定义: 抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类. 抽象工厂允许客户使用抽象的接口来创建一组相关产品,而不需要知道实际产出的具体产品时什么.这样一来,客户就从具体的产品中被解耦了. 模式结构: 举例: 数据库访问程序设计,不同的数据库访问方式可能不一样,为了抽象对对不同数据库的访问,可以将数据库隐藏起来,提供统一的访问方式,用多态进行实现. UML设计: 编程实现及执行结果: #include <iostream> using namespace st

Java设计模式菜鸟系列(五)抽象工厂模式建模与实现

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39784403 抽象工厂模式(Abstract Factory):抽象工厂--顾名思义,就是把工厂抽象出来,不同的工厂生产不同的产品.这样做有个好处:一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码. 一.uml建模图: 二.代码实现 /** * 示例:抽象工厂--顾名思义,就是把工厂抽象出来,不同的工厂生产不同的产品 * * 优点:一旦需要增加新的功能,直接增加新的

《Head First设计模式》C#实现(五)——抽象工厂模式

抽象工厂模式 意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类. UML类图: 场景:抽象村商店想销售Pizza和Hamburg等多种商品,而在美国店和中国店要出售本土化的口味 工厂接口定声明了要创建的产品接口 interface Factory { AbstractHamburg createHamburg(); AbstractPizza createPizza(); } 具体的工厂创建具体产品 class USAFactory : Factory { public

一天一个设计模式——Abstract Factory抽象工厂模式

一.模式说明 前面学习了工厂方法(Factory Method)模式.在工厂方法模式中,在工厂方法模式中,父类决定如何生成实例,但并不决定所要生成的具体类,具体的处理交由子类来处理.这里学习的抽象工厂方法模式中,抽象工厂使用抽象的零件组装成抽象的产品.即使用包含特定的方法接口零件,将零件组装成抽象产品. 二.模式类图: 上面的类图中包含两个包:包含抽象工厂,抽象零件,抽象产品的类所在的包以及具体工厂实现类的包. 三.代码示例 1.Item类: package com.designpattern.