zoukankan      html  css  js  c++  java
  • 简单工厂和单例设计模式

    一:设计模式 

    概念:

    针对特定问题而提出特定的解决方案

    二:简单工厂

    eg:

    使用多态和简单工厂设计模式实现计算器,效果如图所示:

       //父类
        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;
            }
  • 相关阅读:
    react native的注释
    p标签在div中垂直居中,并且div高度随着p标签文字内容的变化而变化
    express框架搭建服务端
    react native项目的创建和运行
    ES6通过使用babel兼容到ie9
    react父传子
    经典排序之 归并排序
    经典排序之 冒泡排序
    C++基础题
    关于虚函数的应用(10个例子)
  • 原文地址:https://www.cnblogs.com/jingpeipei/p/5392090.html
Copyright © 2011-2022 走看看