zoukankan      html  css  js  c++  java
  • 设计模式学习草稿:简单工厂,工厂,抽象工厂

    原文发布时间为:2008-11-27 —— 来源于本人的百度文章 [由搬家工具导入]

    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace reviewBase
    {
        class Class1//简单工厂
        {
            static void Main()
            {
                string expression1 = "2+3";
                ICalculate result1 = SimpleFactory.getCaculate(expression1);
                Console.WriteLine(expression1 + "=" + result1.Excute(expression1));
                string expression2 = "2-3";
                ICalculate result2 = SimpleFactory.getCaculate(expression2);
                Console.WriteLine(expression2 + "=" + result2.Excute(expression2));
                Console.ReadLine();
            }
        }

        public interface ICalculate
        {
            int Excute(string Expressions);
        }
        public class Add : ICalculate
        {
            public int Excute(string Expression)
            {
                string[] num = Expression.Split('+');
                int a = int.Parse(num[0]);
                int b = int.Parse(num[1]);
                return a + b;
            }
        }
        public class Sub : ICalculate
        {
            public int Excute(string Expression)
            {
                string[] num = Expression.Split('-');
                int a = int.Parse(num[0]);
                int b = int.Parse(num[1]);
                return a - b;
            }
        }

        public class SimpleFactory
        {
            public static ICalculate getCaculate(string Expression)
            {
                if (Expression.Contains("+"))
                    return new Add();
                else
                    return new Sub();
            }
        }
    }

    ---------------------------------

    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace reviewBase
    {
        class Class2//工厂
        {
            static void Main()
            {
                string expression1 = "2+3";
                IFactory test1 = new Factory1();
                ICalculate result1=test1.getCaculate();
                Console.WriteLine(expression1 + "=" + result1.Excute(expression1));

                string expression2="2-3";
                IFactory test2 = new Factory2();
                ICalculate result2 = test2.getCaculate();
                Console.WriteLine(expression2 + "=" + result2.Excute(expression2));

                Console.ReadLine();
            }
        }

        public interface ICalculate
        {
            int Excute(string Expressions);
        }
        public class Add : ICalculate
        {
            public int Excute(string Expression)
            {
                string[] num = Expression.Split('+');
                int a = int.Parse(num[0]);
                int b = int.Parse(num[1]);
                return a + b;
            }
        }
        public class Sub : ICalculate
        {
            public int Excute(string Expression)
            {
                string[] num = Expression.Split('-');
                int a = int.Parse(num[0]);
                int b = int.Parse(num[1]);
                return a - b;
            }
        }
        public interface IFactory
        {
            ICalculate getCaculate();
        }
        public class Factory1:IFactory
        {
            public ICalculate getCaculate()
            {
                    return new Add();
            }
        }
        public class Factory2 : IFactory
        {
            public ICalculate getCaculate()
            {
                return new Sub();
            }
        }
    }
    ---------------------------------------------

    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace reviewBase
    {
        class Class4//抽象工厂
        {
            static void Main()
            {
                Farm fruit1, vagetabel1,fruit2,vagetabel2;
                fruit1 = new AFarm();
                vagetabel1 = new AFarm();
                fruit1.factoryFruitFarm().PrintName();
                vagetabel1.factoryVagFarm().PrintName();
                fruit2 = new BFarm();
                vagetabel2 = new BFarm();
                fruit2.factoryFruitFarm().PrintName();
                vagetabel2.factoryVagFarm().PrintName();
                Console.ReadLine();
            }
        }

        public abstract class Farm
        {
            public abstract FruitFarm factoryFruitFarm();
            public abstract VagetabelFarm factoryVagFarm();
        }

        public class AFarm : Farm
        {
            public override FruitFarm factoryFruitFarm()
            {
                return new Apple();
            }
            public override VagetabelFarm factoryVagFarm()
            {
                return new BaiCai();
            }
        }

        public class BFarm : Farm
        {
            public override FruitFarm factoryFruitFarm()
            {
                return new Banana();
            }
            public override VagetabelFarm factoryVagFarm()
            {
                return new QingCai();
            }
        }

        public abstract class FruitFarm
        {
            public abstract void PrintName();
        }

        public class Apple : FruitFarm
        {
            public override void PrintName()
            {
                Console.WriteLine("apple");
            }
        }
        public class Banana : FruitFarm
        {
            public override void PrintName()
            {
                Console.WriteLine("banana");
            }
        }
        public abstract class VagetabelFarm
        {
            public abstract void PrintName();
        }
        public class BaiCai:VagetabelFarm
        {
            public override void PrintName()
            {
                Console.WriteLine("白菜");
            }
        }

        public class QingCai : VagetabelFarm
        {
            public override void PrintName()
            {
                Console.WriteLine("青菜");
            }
        }

    }

  • 相关阅读:
    学习笔记:模拟退火
    我的 2020
    高一上文化课期末复习
    IOI 2020-2021 集训队作业
    学习笔记:插头DP
    NOIP2020 游记
    刷题记录
    学习笔记:四边形不等式优化 DP
    操作集合时 报错 java.lang.UnsupportedOperationException
    【编码】接收前端参数时,偶数汉字正常,奇数汉字乱码
  • 原文地址:https://www.cnblogs.com/handboy/p/7148496.html
Copyright © 2011-2022 走看看