namespace TEST
{
//用于生成一个对应的操作类,这个工厂只是用来产生操作类的,不做其他只用
public class Factory
{
public Operate GetOpetration(string mark)
{
switch(mark)
{
case "+":
return new OperateAdd();
break;
case "-":
return new OperateSub();
break;
case "*":
return new OperateMultiply();
break;
case "/":
return new OperateDivision();
break;
default:
return null;
break;
}
}
}
//这个类是用来执行相关的操作的
public abstract class Operate
{
public double operateTwo { get; set; }
public double operateOne { get; set; }
public abstract string Opetration();
}
public class OperateAdd:Operate
{
public override string Opetration()
{
return Convert.ToString(base.operateOne + base.operateTwo);
}
}
public class OperateSub : Operate
{
public override string Opetration()
{
return Convert.ToString(this.operateOne - this.operateTwo);
}
}
public class OperateMultiply : Operate
{
public override string Opetration()
{
return Convert.ToString(this.operateOne*this.operateTwo);
}
}
public class OperateDivision : Operate
{
public override string Opetration()
{
if (this.operateTwo != )
return Convert.ToString(this.operateOne / this.operateTwo);
else
return "input error";
}
}
class Program
{
static void Main(string[] args)
{
try
{
double num1=Convert.ToDouble( Console.ReadLine());
double num2 =Convert.ToDouble( Console.ReadLine());
string op = Convert.ToString(Console.ReadLine());
var factory = new Factory();
var Opetration = factory.GetOpetration(op);
Opetration.operateOne = num1;
Opetration.operateTwo = num2;
Console.WriteLine(Opetration.Opetration()); Console.Read(); Console.Read();
}
catch (Exception ex)
{
Console.WriteLine("程序出错");
} }
}
}

Design Pattern——Factory_DP的更多相关文章

  1. 说说设计模式~大话目录(Design Pattern)

    回到占占推荐博客索引 设计模式(Design pattern)与其它知识不同,它没有华丽的外表,没有吸引人的工具去实现,它是一种心法,一种内功,如果你希望在软件开发领域有一种新的突破,一个质的飞越,那 ...

  2. 设计模式(Design Pattern)系列之.NET专题

    最近,不是特别忙,重新翻了下设计模式,特地在此记录一下.会不定期更新本系列专题文章. 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结. 使用 ...

  3. [转]Design Pattern Interview Questions - Part 4

    Bridge Pattern, Composite Pattern, Decorator Pattern, Facade Pattern, COR Pattern, Proxy Pattern, te ...

  4. [转]Design Pattern Interview Questions - Part 2

    Interpeter , Iterator , Mediator , Memento and Observer design patterns. (I) what is Interpreter pat ...

  5. [转]Design Pattern Interview Questions - Part 3

    State, Stratergy, Visitor Adapter and fly weight design pattern from interview perspective. (I) Can ...

  6. [转]Design Pattern Interview Questions - Part 1

    Factory, Abstract factory, prototype pattern (B) What are design patterns? (A) Can you explain facto ...

  7. design pattern

    1. visitor design pattern http://butunclebob.com/ArticleS.UncleBob.IuseVisitor

  8. Design Pattern: Observer Pattern

    1. Brief 一直对Observer Pattern和Pub/Sub Pattern有所混淆,下面打算通过这两篇Blog来梳理这两种模式.若有纰漏请大家指正. 2. Use Case 首先我们来面 ...

  9. Scalaz(10)- Monad:就是一种函数式编程模式-a design pattern

    Monad typeclass不是一种类型,而是一种程序设计模式(design pattern),是泛函编程中最重要的编程概念,因而很多行内人把FP又称为Monadic Programming.这其中 ...

随机推荐

  1. 学习新手给Android新手的一些学习建议

    时间紧张,先记一笔,后续优化与完善. Shamoo做Android开辟已有一年了,对Android开辟也有一点点了解.上面就给Android新手说说我对Android浅面的意识和一点建议吧,知道的大牛 ...

  2. Linux进程分配内存的两种方式--brk() 和mmap()

    如何查看进程发生缺页中断的次数? 用ps -o majflt,minflt -C program命令查看. majflt代表major fault,中文名叫大错误,minflt代表minor faul ...

  3. 他们最先开发微信小程序,为何现在又退出了?

    1.当前现状 这几天大家又被微信小程序刷屏了,"得到"退出了小程序,"今日头条"暂停了服务,各种股票交易类的小程序也在证监会的要求下纷纷暂停服务.如果大家还不知 ...

  4. ASP.NET MVC 异步Excel数据选择导出

    以前习惯用一些框架来实现Excel文件数据导出,工作中也经常用到:比如extJs.easyUI.angularJs等,最近在做mvc程序的时候要实现该功能,相信这种功能在我们实际工作中是很常见,尤其是 ...

  5. (细节控)swift3.0与融云IMKIT开发问题(一部分) override func onSelectedTableRow Method does not override any method from its superclass

    原官网文档方案如下,在swift3.0的情况下出现 override func onSelectedTableRow  Method does not override any method from ...

  6. Microsoft Edge与Google Chrome那些不同的举止

    以下针对14393版本Edge与Chrome 54 html dom/select的如果options里没有符合的值时edge会选择第一个,chrome(54)会置空选项 html dom/input ...

  7. Zookeeper 安装和配置

    单机模式 下载zookeeper的安装包之后, 解压到合适目录. 进入zookeeper目录下的conf子目录, 创建zoo.cfg: tickTime=2000 dataDir=/Users/app ...

  8. CodeForces 747D Winter Is Coming

    贪心. 只考虑负数的位置,先填间隔较小的,再填间隔较大的.如果填不满就不填,如果有多余就留给最后一个负数到终点这段路. #include<cstdio> #include<cstri ...

  9. Writing clean code is what you must do in order to call yourself a professional.

    Clean Code  A Handbook of Agile Software Craftsmanship

  10. C# 三角形外心和外接圆半径计算方法

    在网上找了好久,想找一个现成的方法来用,折腾半天发现没有一个好用的,最后迫不得已自己写了一个,需要的同学可以直接拿去用, private void GetTriangleExcenterRadius( ...