• 简单工厂和单例的一些事




    一:简单工厂(使用计算器例子进行描述概括)

      定义:
    专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类或接口。简单工厂模式又称为静态工厂方法(Static Factory Method)模式,属于类的创建型模式,通常根据一个条件(参数)来返回不同的类的实例。

    效果如图所示:

    复制代码
        //父类
        public abstract class Operation
        {
            public double NumberA { get; set; }
    
            public double NumberB { get; set; }
    
            public abstract double GetResult();
    }
    
         //子类 加法
        public class OperationAdd:Operation
        {
         
           public override double GetResult()
           {
               double result = NumberA + NumberB;
               return result;
           }
    }
    
          //子类 减法
     public class OperationJian:Operation
        {
            public override double GetResult()
            {
                double result = NumberA - NumberB;
                return result;
            }
    
        }
    
       //子类 乘法
      public class OperationCheng:Operation
        {
    
           public override double GetResult()
           {
               double result = NumberA * NumberB;
               return result;
           }
    
        }
    
         //子类 除法
        public  class OperationChu:Operation
        {
           public override double GetResult()
           {
               if (NumberB == 0)
               {
                   throw new Exception("除数不能为0!");
               }
               double result = NumberA / NumberB;
               return result;
           
           }
        }
    复制代码

    在计算按钮中获取两个操作数以及运算符、计算的方法

    复制代码
                //获取两个操作数
                int num1 = Convert.ToInt32(txtList1.Text);
    
                int num2 = Convert.ToInt32(txtList2.Text);
    
                //获取运算符
                string oper = cboList.Text;
    
                Operation calc=OperationFactory.CreateInstance(oper);
    
                calc.NumberA = num1;
                calc.NumberB = num2;
    
                //计算方法
                int result = 0;
    
                try
                {
                    result = Convert.ToInt32(calc.GetResult());
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
    
                    throw;
                }
    
               label1.Text = result.ToString();
    复制代码

    工厂类:(核心 )

    二:单例模式

    单例模式要求一个类只能有一个对象

    四步骤:

    ①:定义一个类型和当前类名相同的静态变量

    ②:将构造改为私有

    ③:定义一个静态方法  给静态变量赋值,实例化对象并返回实例引用

    ④:将静态变量置空

    复制代码
            public partial class Form1 : Form
        {
            //定义一个类型和当前类名相同的静态变量
            public static Form1 frm;
    
            //将构造改成私有
           private Form1()
            {
                InitializeComponent();
            }
    
            //定义一个静态方法  给静态变量赋值
           public static Form1 GetInstance()
           {
               if (frm == null)
               { 
                  frm=new Form1();
               }
               return frm;
           }
    
    
            //将静态变量置空
            private void Form1_FormClosing(object sender, FormClosingEventArgs e)
            {
                frm = null;
            }
    复制代码

  • 相关阅读:
    Windows 10「设置」应用完整MS-Settings快捷方式汇总
    Windows 10「设置」应用完整MS-Settings快捷方式汇总
    Windows 10「设置」应用完整MS-Settings快捷方式汇总
    win10 uwp 打包第三方字体到应用
    git无法pull仓库refusing to merge unrelated histories
    win10 uwp 打包第三方字体到应用
    win10 uwp 打包第三方字体到应用
    visio移动形状 上下左右键 移动滚动条
    visio移动形状 上下左右键 移动滚动条
    visio移动形状 上下左右键 移动滚动条
  • 原文地址:https://www.cnblogs.com/hq-123/p/5391047.html
Copyright © 2020-2023  润新知