using System.Collections.Generic;
using UnityEngine;
#region Dec
//summary:通过封装实现解耦 行为的请求者和行为的实现者分开 可以对请求的指令做很多操作 需要的时候再执行命
#endregion
public abstract class IBook
{
public string Name;
public abstract void ReadBook();
public abstract string GetBookName();
}
public class StoryBook : IBook
{
public StoryBook(string name)
{
Name = name;
}
public override void ReadBook()
{
Debug.Log("I am reading a story book");
}
public override string GetBookName()
{
return Name;
}
}
public class HistoryBook : IBook
{
public HistoryBook(string name)
{
Name = name;
}
public override void ReadBook()
{
Debug.Log("I am reading a history book");
}
public override string GetBookName()
{
return Name;
}
}
public class CommandPattern : MonoBehaviour {
private static List<IBook> library = new List<IBook>();
void Update () {
if (Input.GetKey(KeyCode.A))
{
StoryBook story = new StoryBook("AAA");
library.Add(story);
}
if (Input.GetKey(KeyCode.D))
{
HistoryBook history = new HistoryBook("BBB");
library.Add(history);
}
}
public static void Execute()
{
foreach(IBook book in library)
{
book.GetBookName();
}
}
}