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");
    
    	}
    
    }
    
     
  • 相关阅读:
    [C++]仿java.lang.String的字符串工具类[原]
    SQL基础1创建表、用户
    Linux中gdb 查看core堆栈信息
    Direct3D9基础工具类[原]
    eclipse3.4启动错误
    ndk连接第三方库
    数据库基本概念
    MySQL常见命令
    MySQL启动和停止
    MySQL配置文件
  • 原文地址:https://www.cnblogs.com/hellozzz/p/4654789.html
Copyright © 2011-2022 走看看