码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式之 - 抽象工厂模式(实例)

时间:2015-07-17 17:42:16      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

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

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

 

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");

	}

}

 

 

设计模式之 - 抽象工厂模式(实例)

标签:

原文地址:http://www.cnblogs.com/hellozzz/p/4654789.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!