zoukankan      html  css  js  c++  java
  • 超级简单的工厂模式温度转换

     1       double result = 0;
     2 
     3       double value=Convert.ToDouble(textBox1.Text);
     4 
     5       if (radioButton1.Checked)
     6       {
     7         result = 9 * value / 5 + 32;
     8       } 
     9       else if (radioButton2.Checked)
    10       {
    11         result = 5 * (value - 32/ 9;
    12       }
    13       
    14       textBox1.Text=Convert.ToString(result);
    上面的是原始代码,变成简单工厂模式是这样的:
     1   public class TemperatureConvert
     2   {//这是基类
     3     virtual public double Convert(double d)
     4     {//公共方法
     5       double result = 0;
     6       return result;
     7     }
     8   }
     9 
    10   public class CelsConvert:TemperatureConvert
    11   {//转摄氏度子类
    12     public override double Convert(double d)
    13     {//参数是原始数值
    14       double result = 0;
    15       result = 9 * d / 5 + 32;//公式
    16       return result;
    17     }
    18   }
    19 
    20   public class FahrConvert:TemperatureConvert
    21   {//华氏温度子类
    22     public override double Convert(double d)
    23     {
    24       double result = 0;
    25       result = 5 * (d - 32/ 9;//公式
    26       return result;
    27     }
    28   }
    29 
    30   public class TemperatureConvertFactory
    31   {//工厂类
    32     public static TemperatureConvert GetConvert(string yourNeed)
    33     {
    34       TemperatureConvert result = null;
    35       switch (yourNeed)
    36       {//用字符串真是方便,C#真酷
    37       case "toFahr"://这里用了字符串作型别码
    38         result = new FahrConvert();
    39           break;
    40 
    41       case "toCels":
    42         result = new CelsConvert();
    43         break;
    44 
    45       default:
    46         break;
    47       }
    48       return result;
    49     }
    50   }
    下面是使用方法,并不简单,但是如果添加新的温度子类很方便,呵呵
    1       string typeCodeStr = "toCels";
    2       if (radioButton2.Checked)
    3       {
    4         typeCodeStr = "toFahr";
    5       }
    6       TemperatureConvert tc = TemperatureConvertFactory.GetConvert(typeCodeStr);
    7       double originVal = Convert.ToDouble(textBox1.Text);
    8       double resultVal = tc.Convert(originVal);
    9       textBox1.Text = Convert.ToString(resultVal);

    来一张UML类图


  • 相关阅读:
    centos 6 安装
    DNS介绍
    Saltstack远程执行(四)
    Saltstack数据系统Grains和Pillar(三)
    array_multisort 二维数组排序
    jqgit...
    Redis 创建多个端口 链接redis端口
    百度商桥回话接口
    加ico
    redis 新开端口号
  • 原文地址:https://www.cnblogs.com/lizunicon/p/1165583.html
Copyright © 2011-2022 走看看