工厂模式简介
工厂模式简单来说是将所有需要创造的对象用一个对象去创造。 传入参数》》工厂类》》new出来对应的物体。 顾客需要食物时通过服务员告诉厨师,厨师再将食物做出来。 这里服务员担当工厂类的角色。
简单代码例子
- 需要new的不同对象
public class Food
{
public virtual void ShowMe()
{
}
}
public class TomatoFood : Food
{
public override void ShowMe()
{
//base.ShowMe();
//Print("TomatoFood");
}
}
public class EggFood : Food
{
public override void ShowMe()
{
//base.ShowMe();
//Print("EggFood");
}
}
- 工厂类
public class TeachFactory
{
public Food ShowFactory(string name)
{
if (name == "egg")
{
return new EggFood();
}
else if (name == "tomato")
{
return new TomatoFood();
}
else
{
return null;
}
}
}
- 传入参数
public class Main
{
public void MainShow()
{
TeachFactory teachFactory = new TeachFactory();
Food tmpTood1 = teachFactory.ShowFactory("egg");
tmpTood1.ShowMe();
Food tmpTood2 = teachFactory.ShowFactory("tomato");
tmpTood2.ShowMe();
}
}
##Uinity实例
//图片组
public void LoadSprite(string name)
{
allSprit = Resources.LoadAll(name);
}
//工厂类
public GameObject GetSprite(int index)
{
GameObject tmpobj = new GameObject("tmpGame");
Image tmpImag = tmpobj.AddComponent<Image>();
tmpImag.sprite = allSprit[index] as Sprite;
return tmpobj;
}
int allIndex = 0;
void Update()
{
if (Input.GetKeyDown(KeyCode.A))
{
allIndex++;
GameObject tmpObj = GetSprite(allIndex % 10);
//通过传入的图片Id,加载相对应的图片
tmpObj.transform.parent = transform;
tmpObj.transform.position = new Vector3(allIndex * 80, 20, 0);
}
}