zoukankan      html  css  js  c++  java
  • 设计模式-创建型模式-抽象工厂模式

    抽象工厂模式

     抽象工厂模式是对简单工厂模式的封装

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace SimpleFactory
    {
        public class Operation
        {
            public double NumberA { get; set; }
            public double NumberB { get; set; }
    
            public virtual double GetResult()
            {
                double result = 0;
                return result;
            }
        }
    
        public class OperationAdd : Operation
        {
            public override double GetResult()
            {
                double result = 0;
                result = NumberA + NumberB;
                return result;
            }
        }
    
        public class OperationSub : Operation
        {
            public override double GetResult()
            {
                double result = 0;
                result = NumberA - NumberB;
                return result;
            }
        }
    
        public class OperationMultiplication : Operation
        {
            public override double GetResult()
            {
                double result = 0;
                result = NumberA * NumberB;
                return result;
            }
        }
    
        public class OperationDivision : Operation
        {
            public override double GetResult()
            {
                if(NumberB==0)
                {
                    throw new Exception("除数不能为0!!!记住啦");
                }
                else
                {
                    double result = 0;
                    result = NumberA / NumberB;
                    return result; 
                }
            }
        }
    
        public class OperationFactory
        {
            public static Operation CreateOperate(string operate)
            {
                Operation oper = null;
                switch (operate)
                { 
                    case "+":
                        oper=new OperationAdd();
                        break;
                    case "-":
                        oper = new OperationSub();
                        break;
                    case "*":
                        oper=new OperationMultiplication();
                        break;
                    case "/":
                        oper = new OperationDivision();
                        break;
                }
                return oper;
            }
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("请输入第一个数字:");
                double numberA = double.Parse(Console.ReadLine());
                Console.WriteLine("请输入操作符:");
                string opera = Console.ReadLine();
                Console.WriteLine("请输入第二个数字");
                double numberB=double.Parse(Console.ReadLine());
                Operation oper = new Operation();
                oper = OperationFactory.CreateOperate(opera);
                oper.NumberA = numberA;
                oper.NumberB = numberB;
                double result = oper.GetResult();
                Console.WriteLine(result.ToString());
                Console.ReadKey();
            }
        }
    }
  • 相关阅读:
    Zabbix 最新安装视频
    Centos大文件切割和合并
    Docker 基础
    Docker的安装及加速
    mysql/MariaDB 搭建后创建密码及开启远程
    zabbix 添加 ROS 软路由监控 WinBox设置
    解决zabbix3.4X图形页面中文乱码
    Redis 4.0+安装及配置
    Zabbix3.4服务器的搭建--CentOS7
    CentOS 7 Nginx+PHP环境搭建!
  • 原文地址:https://www.cnblogs.com/chenyongblog/p/3397720.html
Copyright © 2011-2022 走看看