C#简单工厂模式实现松耦合度四则运算

呵呵,我本来没有C#的过多功底,只是想想像整合了书上的代码,居然OK了。

自喜一下。。

  1 using System;
  2 public class Operation
  3 {
  4     private double _numberA = 0;
  5     private double _numberB = 0;
  6
  7     public double NumberA
  8     {
  9         get { return _numberA; }
 10         set { _numberA = value; }
 11     }
 12     public double NumberB
 13     {
 14         get { return _numberB; }
 15         set { _numberB = value; }
 16     }
 17     public virtual double GetResult()
 18     {
 19         double result = 0;
 20         return result;
 21     }
 22 }
 23
 24 class OperationAdd : Operation
 25 {
 26     public override double GetResult()
 27     {
 28         double result = 0;
 29         result = NumberA + NumberB;
 30         return result;
 31     }
 32 }
 33
 34 class OperationSub : Operation
 35 {
 36     public override double GetResult()
 37     {
 38         double result = 0;
 39         result = NumberA - NumberB;
 40         return result;
 41     }
 42 }
 43
 44 class OperationMul : Operation
 45 {
 46     public override double GetResult()
 47     {
 48         double result = 0;
 49         result = NumberA * NumberB;
 50         return result;
 51     }
 52 }
 53
 54 class OperationDiv : Operation
 55 {
 56     public override double GetResult()
 57     {
 58         double result = 0;
 59         if (NumberB == 0)
 60             throw new Exception("div number can not be 0.");
 61         result = NumberA / NumberB;
 62         return result;
 63     }
 64 }
 65
 66 public class OperationFactory
 67 {
 68     public static Operation createOperate(string operate)
 69     {
 70         Operation oper = null;
 71         switch (operate)
 72         {
 73             case "+":
 74                 oper = new OperationAdd();
 75                 break;
 76             case "-":
 77                 oper = new OperationSub();
 78                 break;
 79             case "*":
 80                 oper = new OperationMul();
 81                 break;
 82             case "/":
 83                 oper = new OperationDiv();
 84                 break;
 85         }
 86         return oper;
 87     }
 88 }
 89 public class OperationClient
 90 {
 91     class Program
 92     {
 93         public static void Main(string[] args)
 94         {
 95             Operation oper;
 96
 97             Console.Write("Please input numberA: ");
 98             string strNumberA = Console.ReadLine();
 99             Console.Write("Please select operate(+ - * /): ");
100             string strOperate = Console.ReadLine();
101             oper = OperationFactory.createOperate(strOperate);
102             Console.Write("Please input numberB: ");
103             string strNumberB = Console.ReadLine();
104             oper.NumberA = Convert.ToDouble(strNumberA);
105             oper.NumberB = Convert.ToDouble(strNumberB);
106             string strResult = "";
107             strResult = Convert.ToString(oper.GetResult());
108             Console.WriteLine("Result is :" + strResult);
109             Console.ReadLine();
110             Console.Write("Press any key to continue . . . ");
111             Console.ReadKey(true);
112         }
113     }
114 }

时间: 2024-11-01 00:11:46

C#简单工厂模式实现松耦合度四则运算的相关文章

《设计模式》学习笔记2——简单工厂模式

定义 简单工厂模式并不属于GoF(Gang of Four四人组)23中设计模式,有些地方的解释说因为简单工厂模式太简单,所以23中设计模式就没有单独列出. 但是简单工厂模式在实际的应用中却很常用,因此在刘伟老师的<设计模式>一书中就还是列了出来. 简单工厂模式引用书中的定义如下: 简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类.因为在简单工厂模式中用于创建实例的方法是静态(static)方法

设计模式: 简单工厂模式

引入: 在我们的思维中,会有一种习惯,当遇到某种问题时,会直接考虑用最直接的语言去去实现它,而往往忽略了整个程序的可维护性.可扩展性. 比如,我们写一个基本的计算器功能,要求能计算四则运算,大家或许会直接写: public class ProgramDemo{ public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(

设计模式系列之一:简单工厂模式

前言 设计模式能够帮助我们设计出健壮,低耦合性的代码,从此和高耦合的代码say goodbye!在所有的的设计模式中,简单工厂算是我们平时接触比较多的吧,多线程中的消费者工厂类与生产者工厂类应该算是接触最早的设计模式,简单工厂模式要解决的首要问题就是降低程序之间的耦合度,通过Java中的封装.继承与多态实现解耦.通过使用简单工厂模式,我们设计的代码更易于维护和复用 问题背景 在进入正题之前我们先看一下问题背景: 某公司开发了一个A软件,数据库使用的是SQLServer.后由于客户要求需要使用Or

C#设计模式(2)——简单工厂模式

原文:C#设计模式(2)--简单工厂模式 一.引言 这个系列也是自己对设计模式的一些学习笔记,希望对一些初学设计模式的人有所帮助的,在上一个专题中介绍了单例模式,在这个专题中继续为大家介绍一个比较容易理解的模式--简单工厂模式. 二.简单工厂模式的介绍 说到简单工厂,自然的第一个疑问当然就是什么是简单工厂模式了? 在现实生活中工厂是负责生产产品的,同样在设计模式中,简单工厂模式我们也可以理解为负责生产对象的一个类, 我们平常编程中,当使用"new"关键字创建一个对象时,此时该类就依赖与

大话设计模式之简单工厂模式

       从设计模式的类型来说,简单工厂模式是属于创建性模式,又叫做静态工厂方法模式,但不属于23中GOF设计模式之一,简单的工厂模式是由一个工厂对象决定创建出哪一种产品类的实例,简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现.         那么到底什么是简单工厂模式?我们中午在中快食堂吃饭,中快食堂满足了我们的需求,这里的中快食堂就是一个简单的工厂,在现实生活中工厂是负责生产产品的,,同样在设计模式中,简单工厂模式我们也可以理解为负责生产对象的一个

实例解析C++设计模式编程中简单工厂模式的采用_C 语言

简单工厂模式中专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类.它又称为静态工厂方法模式,属于类的创建型模式. 简单工厂模式的UML类图 简单工厂模式的程序通过封装继承来降低程序的耦合度,设计模式使得程序更加的灵活,易修该,易于复用. 简单工厂是在工厂类中做判断,从而创造相应的产品. 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例.   该模式中包含的角色及其职责   1.工厂(Creator)角色  

设计模式之二(简单工厂模式)

原文:设计模式之二(简单工厂模式) 前言 简单工厂模式根据提供的数据或者参数返回几个可能的类中的一个实例,说通俗点有点像面向对象编程中的多态性,一个基类,有多个派生类,在另外的调用程序中,根据参数来决定返回这个基类的哪个具体的派生类,返回值为基类类型,因为基类的引用可以指向派生类对象,而且这些所有的派生类都包含有基类的函数,也就是说派生类中有相同的函数,但是函数的实现可能不同. 下面我只是来演示一下简单工厂模式,代码不会太复杂.所以大家可以使用Submile Text工具. 使用方法博客文章链接

PHP中“简单工厂模式”实例代码讲解_php技巧

简单工厂模式: ①抽象基类:类中定义抽象一些方法,用以在子类中实现 ②继承自抽象基类的子类:实现基类中的抽象方法 ③工厂类:用以实例化对象 看完文章再回头来看下这张图,效果会比较好 采用封装方式 复制代码 代码如下: <?php class Calc{ /** * 计算结果 * * @param int|float $num1 * @param int|float $num2 * @param string $operator * @return int|float */ public func

iOS设计模式之简单工厂模式

简单工厂模式 基本理解 到底要实例化谁,将来会不会增加实例化的对象,比如计算器增加开根运算,这是很容易变化的地方,应该考虑用一个单独的类来做这个创造实例的过程,这就是工厂. 通过使用工厂模式,我们可以降低耦合度,做到对扩展开放,对修改封闭.如果需要再增加其他的方法,我们只需要重新构建一个子类即可. 例子 这里简单介绍一下. 比如我们要做一个计算器,我们会写几个运算类,比如加法.乘法.除法和减法.但是我们在使用这些运算类的时候,我们没有必要去在客户端每次用switch判断或者if判断.我们只需要传