zoukankan      html  css  js  c++  java
  • [传智播客学习日记]简单工厂模式计算器案例

    这周学习了最基本的设计模式——简单工厂模式,指的是通过一个返回值为父类的静态函数,取得一个子类的对象,以实现“父类 Obj = new 子类()”方式的多态。 以下是一个简易计算器,每当扩展一个运算方法时,只需要增加一个类就可以了。 (至于里面恶心的switch块,日后再研究怎么去掉)

     1 using System;
    2 using System.Collections.Generic;
    3 using System.Linq;
    4 using System.Text;
    5
    6 namespace 工厂模式计算器
    7 {
    8 public abstract class Cal
    9 {
    10 private double number1;
    11
    12 public double Number1
    13 {
    14 get { return number1; }
    15 set { number1 = value; }
    16 }
    17 private double number2;
    18
    19 public double Number2
    20 {
    21 get { return number2; }
    22 set { number2 = value; }
    23 }
    24 public abstract double JiSuan();
    25 }
    26
    27 class Add : Cal
    28 {
    29 public override double JiSuan()
    30 {
    31 return Number1 + Number2;
    32 }
    33 }
    34 class Sub : Cal
    35 {
    36 public override double JiSuan()
    37 {
    38 return Number1 - Number2;
    39 }
    40 }
    41 class Mul : Cal
    42 {
    43 public override double JiSuan()
    44 {
    45 return Number1 * Number2;
    46 }
    47 }
    48
    49 class Program
    50 {
    51 //简单工厂模式
    52 static Cal CreateCal(string caoZuoFu)
    53 {
    54 Cal cal = null;
    55 switch (caoZuoFu)
    56 {
    57 case"+":
    58 cal = new Add();
    59 break;
    60 case "-":
    61 cal = new Sub();
    62 break;
    63 case "*":
    64 cal = new Mul();
    65 break;
    66 }
    67 return cal;
    68 }
    69
    70 static void Main(string[] args)
    71 {
    72 Console.WriteLine("请输入操作数1:");
    73 double d1 = Convert.ToDouble(Console.ReadLine());
    74
    75 Console.WriteLine("请输入操作数2:");
    76 double d2 = Convert.ToDouble(Console.ReadLine());
    77
    78 Console.WriteLine("请输入运算符:");
    79 string caoZuoFu = Console.ReadLine();
    80
    81 Cal myCal = CreateCal(caoZuoFu);
    82
    83 myCal.Number1 = d1;
    84 myCal.Number2 = d2;
    85
    86 Console.WriteLine("结果是:{0}",myCal.JiSuan());
    87 Console.ReadKey();
    88 }
    89 }
    90 }
  • 相关阅读:
    微信验证代码
    微信内置浏览器的JS API
    伪类和伪元素
    asp.net core mvc 脚手架搭建过程介绍
    C#无锁内存队列
    关于微软OWIN的一篇好文章
    安装了Win10预览版10074,不能设置开发模式的bug解决
    关于Quartz的一些经历
    MEF接口应用初探
    简单的接口框架
  • 原文地址:https://www.cnblogs.com/Elijah/p/2224365.html
Copyright © 2011-2022 走看看