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");
    
    	}
    
    }
    
     
  • 相关阅读:
    正则表达式分组小记
    Python中关于try...finally的一些疑问
    hello,world!
    02操控奴隶——掌握它的语言“Python”
    01操控奴隶——奴隶的构成与运行方式
    vue特殊属性 key ref slot
    vue内置组件 transition 和 keep-alive 使用
    vue文档全局api笔记2
    vue文档全局api笔记1
    vue 二三倍图适配,1像素边框
  • 原文地址:https://www.cnblogs.com/hellozzz/p/4654789.html
Copyright © 2011-2022 走看看