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");
    
    	}
    
    }
    
     
  • 相关阅读:
    docker安装wnameless/oracle-xe-11g并运行(手写超详细)
    QQ浏览器兼容模式问题
    list中放map的几种方式
    oracle存储函数实例
    vue中使用Element主题自定义肤色
    使用eclipse初步学习vue.js基础==》v-for的使用 ②
    使用eclipse初步学习vue.js的基本操作 ①
    发布网站的流程演示
    bookkeeper table service调研
    python爬取今日头条街拍
  • 原文地址:https://www.cnblogs.com/hellozzz/p/4654789.html
Copyright © 2011-2022 走看看