设计模式---抽象工厂模式(DesignPattern_AbstractFactory)

简介: DesignPattern_AbstractFactory摘录自:设计模式与游戏完美开发十年磨一剑,作者将设计模式理论巧妙地融入到实践中,以一个游戏的完整实现呈现设计模式的应用及经验的传承 《轩辕剑》之父——蔡明宏、资深游戏制作人——李佳泽...

DesignPattern_AbstractFactory

摘录自:设计模式与游戏完美开发

十年磨一剑,作者将设计模式理论巧妙地融入到实践中,以一个游戏的完整实现呈现设计模式的应用及经验的传承 《轩辕剑》之父——蔡明宏、资深游戏制作人——李佳泽、Product Evangelist at Unity Technologies——Kelvin Lo、信仁软件设计创办人—— 赖信仁、资深3D游戏美术——刘明恺 联合推荐全书采用了整合式的项目教学,即以一个游戏的范例来应用23种设计模式的实现贯穿全书,让读者学习到整个游戏开发的全过程和作者想要传承的经验,并以浅显易懂的比喻来解析难以理解的设计模式,让想深入了解此领域的读者更加容易上手。

工程GitHub

ABSTRACT FACTORY -----追MM少不了请吃饭了,麦当劳的套餐和肯德基的套餐都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“两个B套餐”就行了。麦当劳和肯德基就是B套餐的Abstract Factory, B套餐里含有汉堡, 鸡翅和饮料. 麦当劳或肯德基会根据B套餐的规格, 让汉堡Factory, 鸡翅Factory, 饮料Factory分别生产对应B套餐的材料.

抽象工厂模式:客户类和工厂类分开。消费者任何时候需要某套产品集合时,只需向抽象工厂请求即可。抽象工厂会再向具体的工厂生产出符合产品集规格的产品.

using UnityEngine;
using System.Collections;

namespace DesignPattern_AbstractFactory
{
    // 可生成各抽象成品物件的操作
    public abstract class AbstractFactory
    {
        public abstract AbstractProductA CreateProductA();
        public abstract AbstractProductB CreateProductB();
    }

    // 实例工厂建造相应产品操作1
    public class ConcreateFactory1 : AbstractFactory
    {
        public ConcreateFactory1() { }

        public override AbstractProductA CreateProductA()
        {
            return new ProductA1();
        }
        public override AbstractProductB CreateProductB()
        {
            return new ProductB1();
        }
    }

    // 实例工厂建造相应产品操作2
    public class ConcreateFactory2 : AbstractFactory
    {
        public ConcreateFactory2() { }

        public override AbstractProductA CreateProductA()
        {
            return new ProductA2();
        }
        public override AbstractProductB CreateProductB()
        {
            return new ProductB2();
        }
    }

    // 抽象产品类A
    public abstract class AbstractProductA
    {
    }

    // 产品A1
    public class ProductA1 : AbstractProductA
    {
        public ProductA1()
        {
            Debug.Log("生成物件類型A1");
        }
    }

    // 产品A2
    public class ProductA2 : AbstractProductA
    {
        public ProductA2()
        {
            Debug.Log("生成物件類型A2");
        }
    }

    // 抽象产品类A
    public abstract class AbstractProductB
    {
    }

    // 产品B1
    public class ProductB1 : AbstractProductB
    {
        public ProductB1()
        {
            Debug.Log("生成物件類型B1");
        }
    }

    // 产品B2
    public class ProductB2 : AbstractProductB
    {
        public ProductB2()
        {
            Debug.Log("生成物件類型B2");
        }
    }
}
using UnityEngine;
using System.Collections;
using DesignPattern_AbstractFactory;

public class AbstractFactoryTest : MonoBehaviour
{
    void Start()
    {
        UnitTest();
    }


    void UnitTest()
    {
        AbstractFactory Factory = null;

        // 工厂1
        Factory = new ConcreateFactory1();
        // 生产2个产品
        Factory.CreateProductA();
        Factory.CreateProductB();

        // 工厂2
        Factory = new ConcreateFactory2();
        // 产生2个产品
        Factory.CreateProductA();
        Factory.CreateProductB();
    }
}
相关文章
|
7月前
|
设计模式 C++
设计模式之抽象工厂模式(C++)
设计模式之抽象工厂模式(C++)
|
7月前
|
设计模式
设计模式~抽象工厂模式-04
抽象工厂 优点 缺点 使用场景 为创建一组相
30 0
|
5月前
|
设计模式 Java
Java设计模式【三】:抽象工厂模式
Java设计模式【三】:抽象工厂模式
21 0
|
19天前
|
设计模式 Java
【设计模式系列笔记】抽象工厂模式
抽象工厂模式(Abstract Factory Pattern)是一种设计模式,属于创建型模式之一。它提供了一种方式来创建一系列相关或相互依赖的对象,而无需指定它们具体的类。抽象工厂模式通过引入抽象的工厂接口,使得客户端代码可以使用抽象的接口来创建一组相关的产品,而不关心这些产品的具体实现。
109 4
|
8月前
|
设计模式
设计模式~~~抽象工厂模式
设计模式~~~抽象工厂模式
29 0
|
1月前
|
设计模式 Java Windows
23种设计模式,抽象工厂模式的概念优缺点以及JAVA代码举例
【4月更文挑战第10天】抽象工厂模式是一种创建型设计模式,它提供了一个接口用于创建相关或依赖对象的家族,而不需要指定具体类。该模式允许客户端在不知道具体类的情况下,通过其共同的接口来创建一组产品。
30 7
|
9月前
|
设计模式 Java 数据库连接
Java设计模式之抽象工厂模式:创造多个相关对象
在软件开发领域,设计模式是一种用于解决常见问题的实践方法,它提供了一些被验证过的指导原则。抽象工厂模式是创建型设计模式中的佼佼者,可以帮助我们在处理多个相关对象的创建时保持一致性。让我们深入了解抽象工厂模式的内涵以及它如何在Java中应用。
61 0
|
4月前
|
设计模式 Oracle 关系型数据库
设计模式 | 抽象工厂模式
设计模式 | 抽象工厂模式
25 0
|
4月前
|
设计模式 Go 开发工具
Golang设计模式——02抽象工厂模式
Golang设计模式——02抽象工厂模式
23 0
|
4月前
|
设计模式 前端开发
【设计模式】之抽象工厂模式
抽象工厂模式是一种创建型设计模式,适用于需要创建一系列相关或相互依赖对象的场景。在前端开发中,抽象工厂模式可以帮助我们更好地组织和管理代码,提高代码的可维护性和可扩展性。它通过封装对象的创建过程,使得客户端代码与具体类解耦,并且可以通过切换具体工厂类来改变整个系统的行为。然而,它也增加了系统的复杂度,并且当产品族较多时会导致大量的具体工厂类。因此,在使用抽象工厂模式时需要权衡利弊,并根据实际情况进行选择。
55 0
【设计模式】之抽象工厂模式