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();
            }
        }
    }
  • 相关阅读:
    深入理解并发编程 -- 多线程(一)
    使用Mybatis实现动态SQL(二)
    Java设计模式
    使用Mybatis实现动态SQL(一)
    Java
    Java安全(权限)框架
    List-LinkedList、set集合基础增强底层源码分析
    hadoop3.1.0 window win7 基础环境搭建
    springmvc传递有特殊字符的路径参数
    jhipster(springboot+datatable+jpa)后台分页,总结
  • 原文地址:https://www.cnblogs.com/chenyongblog/p/3397720.html
Copyright © 2011-2022 走看看