static void Main(string[] args) { src.AbstractFactory abf = null; AbstractAnimal aba = null; AbstractPlant abp = null; #region 抽象工厂模式 Console.WriteLine("抽象工厂"); //实际客户端中,该实例化代码,会有很多处(要不都是FarmA,要不都是FarmB) //一旦需要修改,会需要修改很多地方,这是不好的,丑陋的啦 //所以需要结合简单工厂,将所有的实例化的地方归到一处 //abf = new FarmFactoryA(); abf = new FarmFactoryB(); aba = abf.CreateAnimal(); abp = abf.CreatePlant(); aba.Eat(); abp.PourWater(); #endregion #region 抽象工厂+简单工厂 Console.WriteLine(); Console.WriteLine(); Console.WriteLine("抽象工厂+简单工厂"); FarmSimpleFactory fsf = new FarmSimpleFactory(); aba = fsf.CreateAnimal(); abp = fsf.CreatePlant(); aba.Eat(); abp.PourWater(); #endregion #region 抽象工厂+简单工厂+反射 Console.WriteLine(); Console.WriteLine(); Console.WriteLine("抽象工厂+简单工厂+反射"); FarmSimpleFactoryReflection fsff = new FarmSimpleFactoryReflection(); aba = fsff.CreateAnimal(); abp = fsff.CreatePlant(); aba.Eat(); abp.PourWater(); #endregion #region 抽象工厂+简单工厂+反射+XML配置文件 Console.WriteLine(); Console.WriteLine(); Console.WriteLine("抽象工厂+简单工厂+反射+XML配置文件"); FarmSimpleFactoryReflectionConfigureFile fsffcf = new FarmSimpleFactoryReflectionConfigureFile(); aba = fsffcf.CreateAnimal(); abp = fsffcf.CreatePlant(); aba.Eat(); abp.PourWater(); #endregion Console.ReadLine(); }
private void Test01() { AbstractFarm absFar = null; AbstractAnimal absAni = null; AbstractPlant absPla = null; //absFar = new HebeiFarm(); absFar = new LiaoNingFarm(); absAni = absFar.CreateAnimal(); absPla = absFar.CreatePlant(); absAni.Eat(); absPla.Grow(); }
/// <summary> /// parsing excel data into current format /// </summary> /// <param name="mat">target</param> /// <param name="rep">source</param> /// <returns> parsed item </returns> /// <returns></returns> public static new AbstractObject Parse(AbstractObject mat, ExcelLoading.AbstractObject rep) { AbstractAnimal ani = mat as AbstractAnimal; ExcelLoading.AbstractAnimal aniRep = rep as ExcelLoading.AbstractAnimal; if (ani != null && aniRep != null) { ani.m_butcheringPerPerson = GameAbstractItem.ParseDependencyCounts(aniRep.butchering_per_person); } else { Debug.Log("AbstractAnimal.Parse: critical parse error"); } return(Resource.Parse(mat, rep)); }
/// <summary> /// parsing excel data into current format /// </summary> /// <param name="mat">target</param> /// <param name="rep">source</param> /// <returns> parsed item </returns> /// <returns></returns> public static new AbstractObject Parse(AbstractObject mat, ExcelLoading.AbstractObject rep) { DomesticAnimal ani = mat as DomesticAnimal; ExcelLoading.DomesticAnimalItem aniRep = rep as ExcelLoading.DomesticAnimalItem; if (ani != null && aniRep != null) { ani.m_container = aniRep.storageType.ParseCont(); ani.m_producePerPerson = aniRep.produce_per_person; ani.m_foodType = GameAbstractItem.ParseDependencyCounts(aniRep.foodType); ani.m_additionalProduction = GameAbstractItem.ParseDependencyCounts(aniRep.additionalProducts); //link to domesticAnimal!!! _sAllDomesticAnimal.Add(ani); } else { Debug.Log("WildAnimal.Parse: critical parse error"); } return(AbstractAnimal.Parse(mat, rep)); }
/// <summary> /// parsing excel data into current format /// </summary> /// <param name="mat">target</param> /// <param name="rep">source</param> /// <returns> parsed item </returns> /// <returns></returns> public static new AbstractObject Parse(AbstractObject mat, ExcelLoading.AbstractObject rep) { WildAnimal ani = mat as WildAnimal; ExcelLoading.WildAnimalItem aniRep = rep as ExcelLoading.WildAnimalItem; if (ani != null && aniRep != null) { ani.m_attack = aniRep.attack; ani.m_protection = aniRep.protection; ani.m_speed = aniRep.speed; ani.m_scary = aniRep.scary; ani.m_minInSquadre = decimal.ToInt32(aniRep.minimal_in_squadre); ani.m_maxInSquadre = decimal.ToInt32(aniRep.maximum_in_squadre); ani.m_chanceToTame = aniRep.chance_to_tame; _sAllWildAnimal.Add(ani); } else { Debug.Log("WildAnimal.Parse: critical parse error"); } return(AbstractAnimal.Parse(mat, rep)); }
public AbstractAnimal CreateAnimalFromAnimalFactory(Animal aAnimal) { AbstractAnimal animal = CreateAnimal(aAnimal); return(animal); }
public void SetContext(AbstractAnimal context) { this._context = context; }