(原创)重学设计模式,总结C#细节 一 简单工厂模式

高效优雅,代码之美,品味其中

 satng@qq.com  http://www.cnblogs.com/satng同步更新

 

class Program
    {
        static void Main(string[] args)
        {
            CobSat co;

         
            co = PabFactoty.CreateOp("a");//类的静态函数直接用类名引用。
            co.InuA = 5;
            co.InuB = 10;
            Console.Write(co.GetResutl().ToString());
           

            //工厂模式点评
            //1.类的静态函数------直接用类名引用就好了。类的静态构造函数不能有返回值。不能有修饰符(静态构造函数是在类初始化由
            //编译器(CLR)自动调用的,一般用来初始化静态变量,且只能有一个),
            //2.类的构造函数------不能有反回值,通过public priavert protected 来限定类的NEW
            //3.工厂模式----是解决类的New问题的一种设计模式(创建型) 封装一类相关变化的类型 通过工厂来决定调用那一个
            //4.抽象类----抽象类不能有实例。它是一个类型。可以有方法的实现,也可以不实现。继承类里可以实现里面的方法,也可以不实现。
            //5.类型转换问题。苹果可以是水果,但水果不是苹果,子类可以转成基类,基类不能转成子类,这里的转换都是隐式转换。
            //6.工厂模式的功能:在工厂模式中,封装了一些类的,(面向对象的编程,并不是类越多直好,类的划分是为了封装,
            //但是分类的基础是抽象,具有相同属性的和功能的对象的抽象集合才是类)

            ///说到底,工厂模式只能解决类的创建问题
        }
    }
  
    //class Uintily
    //{
    //    public int PaFactory()
    //    {
    //        //工产模式调用
    //        CobSat ca;
    //         ca=new PabFactoty
    //    }
    //}


    //*************************
    //*
    //*    ///简单工产模式
    //*
    //*************************

   /// <summary>
   /// 工厂方法基类
   /// </summary>
    public abstract class CobSat
    {
        public int InuA { set; get; }
        public int InuB { set; get; }
        public virtual int GetResutl()
        {
            int result = 0;
            return result;
        }
 
    }
    /// <summary>
    /// 具体的方法类-----加法
    /// </summary>
    public class Suba:CobSat
    {
        public override int GetResutl()
        {
            return InuA + InuB;
        }
    }
    /// <summary>
    /// 具体的方法类-----乘法
    /// </summary>
    public class Subb : CobSat
    {
        public override int GetResutl()
        {
            return InuA * InuB;
        }
    }
    /// <summary>
    /// 抽象工厂类
    /// </summary>
    public class PabFactoty
    {
        public PabFactoty()
        {

        }
        public static CobSat CreateOp(string op)
        {
            CobSat co = null;
            if (op=="a")
            {
               co=new Suba();
            }
            else
            {
                co = new Subb();
            }
            return co;
        }
       
       
    }

 

 

有一点我们要注意的是,New是很消耗资源的,下一节,策略模式

原文地址:https://www.cnblogs.com/mokliu/p/2138919.html