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. 如何实现自己的ClassLoader

    摘自深入分析java web技术内幕

  2. ruby操作mongo DB

    web自动化中,对操作日志功能进行验证(操作日志存在mongoDB中). 为了避免前面操作产生的日志影响结果校验,我们需要先清除之前的所有操作日志. require 'mongo' host = '1 ...

  3. Flexible 弹性盒子模型之CSS align-items 属性

    实例 居中对齐弹性盒的各项 <div> 元素: div { display: flex; align-items:center; } 复制 效果预览 浏览器支持 表格中的数字表示支持该属性 ...

  4. 浅谈JAVA中字符串常量的储存位置

    在讲述这些之前我们需要一些预备知识: java中的内存被分成以下部分: 1.栈区:由编译器自动分配释放,具体方法执行结束后,系统自动释放JVM内存资源. 其作用有保存局部变量的值,包括:1.用来保存基 ...

  5. 构建jenkins

    一.Jenkins简介:    jenkins,之前叫做Hudson,是基于Java开发的一种持续集成工具,用户监控秩序重复的工作,包括: 1>持续的软件版本发布测试项目. 2>监控外部调 ...

  6. AngularJs 通过 ocLazyLoad 实现动态(懒)加载模块和依赖-转

    http://blog.csdn.net/zhangh8627/article/details/51752872 AngularJs 通过 ocLazyLoad 实现动态(懒)加载模块和依赖 标签:  ...

  7. Socket编程中 setsockopt的作用

    功能描述: 获取或者设置与某个套接字关联的选 项.选项可能存在于多层协议中,它们总会出现在最上面的套接字层.当操作套接字选项时,选项位于的层和选项的名称必须给出.为了操作套接字层的选项,应该 将层的值 ...

  8. C# 实现客户端程序自动更新

    看到一篇不错的帖子,可能以后会用到,果断收藏 文章来源 博客园jenry(云飞扬)http://www.cnblogs.com/jenry/archive/2006/08/15/477302.html ...

  9. C#里面Auotpostback回刷时候,textbox里面的password怎么保存

    刷新页面时,如何保留页面上的PassWord模式下的TextBox的值? this.txtUserPwd.Attributes["value"] = txtUserPwd.Text ...

  10. 浙大 pat 1038 题解

    1038. Recover the Smallest Number (30) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHE ...