• (原创)重学设计模式,总结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是很消耗资源的,下一节,策略模式

  • 相关阅读:
    Screen会话命令 Linux
    Recommender Systems中Yehuda Koren 和 Ma Hao的paper
    Matlab 程序结束后发送短信或者邮件
    Chrome浏览器在Windows 和 Linux下的键盘快捷方式
    KL距离,Kullback-Leibler Divergence
    PLSA及EM算法
    求具体矩阵的逆矩阵
    memory-based 协同过滤(CF)方法
    推荐方法总结
    SpringBoot和SpringCloud配置
  • 原文地址:https://www.cnblogs.com/mokliu/p/2138919.html
Copyright © 2020-2023  润新知