zoukankan      html  css  js  c++  java
  • 设计模式之

    跟简单工厂模式不一样的是, 父类会先声明几个子类即将用到的抽象方法, 和简单工厂模式的区别差不多就是这里了,

    但是实际上还有什么不同的, 我需要做更多的实践才能明白, 先贴上一个比较贴近现实需求的实例

    using UnityEngine;
    using System.Collections;
    
    /// <summary>
    /// 定义资源枚举类型
    /// </summary>
    public enum ResourceEnum
    {
    	None,
    	UIResource,
    	AudioResouce,
    }
    
    /// <summary>
    /// 资源管理器基类,抽象产品
    /// </summary>
    public abstract class ResouceManager
    {
    	public abstract void LoadConfig(string path);
    	public abstract void LoadAsset(string name);
    	public abstract void UnLoadResource(bool status);
    }
    
    
    /// <summary>
    /// UI资源管理器,抽象产品的具体产品
    /// </summary>
    public class UIResouceManager : ResouceManager
    {
    	public override void LoadConfig(string path)
    	{
    		Debug.Log("加载UI的配置文件");
    	}
    	public override void LoadAsset(string name)
    	{
    		Debug.Log("加载UI里面的资源");
    	}
    	public override void UnLoadResource(bool status)
    	{
    		Debug.Log("卸载加载的UI资源");
    	}
    }
    
    /// <summary>
    /// Audio资源管理器,抽象产品的具体产品
    /// </summary>
    public class AudioResourceManager : ResouceManager
    {
    	public override void LoadConfig(string path)
    	{
    		Debug.Log("加载和音乐有关的配置文件");
    	}
    	public override void LoadAsset(string name)
    	{
    		Debug.Log("加载音乐文件");
    	}
    	public override void UnLoadResource(bool status)
    	{
    		Debug.Log("卸载加载的音乐文件");
    	}
    }
    
    
    /// <summary>
    /// 简单资源工厂类,负责创建UI,Audio等管理器的实例。
    /// </summary>
    public class ResouceSimpleFactory
    {
    	public ResouceManager CreateManager(ResourceEnum re)
    	{
    		switch (re)
    		{
    			case ResourceEnum.UIResource:
    				return new UIResouceManager();
    			case ResourceEnum.AudioResouce:
    				return new AudioResourceManager();
    			default:
    				return null;
    		}
    	}
    }
    
    
    public class NewBehaviourScript1 : MonoBehaviour {
    
    	// Use this for initialization
    	void Start () 
    	{
    		ResouceSimpleFactory rsf = new ResouceSimpleFactory ();
    		ResouceManager rm = rsf.CreateManager (ResourceEnum.UIResource);
    		rm.LoadAsset("achivement");
    
    	}
    
    }
    
     
  • 相关阅读:
    LeetCode 876——链表的中间结点
    LeetCode 206——反转链表
    一次漫长的代码复现经历
    在 C/C++ 中使用 TensorFlow 预训练好的模型—— 直接调用 C++ 接口实现
    编译 TensorFlow 的 C/C++ 接口
    TensorFlow 同时调用多个预训练好的模型
    在 C/C++ 中使用 TensorFlow 预训练好的模型—— 间接调用 Python 实现
    TensorFlow 调用预训练好的模型—— Python 实现
    Python 学习笔记之 Numpy 库——文件操作
    Python 学习笔记之 Numpy 库——数组基础
  • 原文地址:https://www.cnblogs.com/hellozzz/p/4654789.html
Copyright © 2011-2022 走看看