示例#1
0
        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();
        }
示例#3
0
    /// <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));
    }
示例#4
0
    /// <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));
    }
示例#5
0
    /// <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);
        }
示例#7
0
 public void SetContext(AbstractAnimal context)
 {
     this._context = context;
 }