我是靠谱客的博主 强健服饰,最近开发中收集的这篇文章主要介绍FACTORY METHOD(工厂模式),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1. 意图
定义一个用于创建对象的接口,让子类决定实例化哪一个类。 Factory Method使一个类的

实例化延迟到其子类。


2. 别名

虚构造器(Virtual Constructor)

3. 适用性
在下列情况下可以使用Factory Method模式:
• 当一个类不知道它所必须创建的对象的类的时候。
• 当一个类希望由它的子类来指定它所创建的对象的时候。
• 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类
是代理者这一信息局部化的时候。

4. 结 构


5. 参与者
• Product
— 定义工厂方法所创建的对象的接口。
• ConcreteProduct
— 实现Product接口。
• Creator
— 声明工厂方法,该方法返回一个 Product类型的对象。Creator也可以定义一个工厂方
法的缺省实现,它返回一个缺省的 ConcreteProduct对象。
— 可以调用工厂方法以创建一个Product对象。
• ConcreteCreator
— 重定义工厂方法以返回一个ConcreteProduct实例。
6. 协作
• Creator依赖于它的子类来定义工厂方法,所以它返回一个适当的 ConcreteProduct实例

7.代码实现

假如我们的游戏要对接多个平台,比如腾讯,360,平台SDK中都要求有登录,注册等信息。这时我们就可以使用工厂模式来使得对接不同的平台时代码变得容易

代码结构如下图



这里的ISDK和TencentSDK对应4结构中的Product和ConcreteProduct,具体代码如下

using UnityEngine;
using System.Collections;

public interface ISDK  {
    void Login();
    void Register();
}


using UnityEngine;
using System.Collections;
using System;

public class TencentSDK : ISDK
{
    public void Login()
    {
        throw new NotImplementedException();
    }

    public void Register()
    {
        throw new NotImplementedException();
    }
}

ISDKFactor和TencentSDKFactorCreate对应4结构中的Creator和ConcreteCreator,具体代码如下

using UnityEngine;
using System.Collections;

public interface ISDKFactor  {
    ISDK CreateSDK();
}


using UnityEngine;
using System.Collections;
using System;

public class TencentSDKFactorCreate : ISDKFactor
{
    public ISDK CreateSDK()
    {
        return new TencentSDK();
    }
}


客户端使用部分可以这样

using UnityEngine;
using System.Collections;

public class SDKClient : MonoBehaviour {

    // Use this for initialization
    public ISDKFactor iSDKFactor;
    public ISDK iSDK;
    void Start () {
        iSDKFactor = new TencentSDKFactorCreate();
        iSDK = iSDKFactor.CreateSDK();
    }
	
}
如果我们要把腾讯的SDK改成使用360的SDK只需要把这一句改成360的即可




这里在C#中可以使用配置表加反射的机制,来决定使用哪一个SDK,这样就可以直接在配置表中配置而不用修改客户端的代码

最后

以上就是强健服饰为你收集整理的FACTORY METHOD(工厂模式)的全部内容,希望文章能够帮你解决FACTORY METHOD(工厂模式)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部