简单工程模式 -- 大话设计模式

在今天,读书有时是件“麻烦”事。它需要你付出时间,付出精力,还要付出一份心境。--仅以《大话设计模式》来祭奠那逝去的……

简单工厂的作用是实例化对象,不需要客户了解这个对象属于哪个具体子类。简单工厂实例化的类具有相同的接口或者基类,在子类相对固定或者不需要扩展的时候,可以使用简单工厂。如数据库生产工厂就可以使用简单工厂来实现。

1.简单的计算器实现

  输入两个数和运算符,实现两数相加或者两数相减。

  首先我们定义一个运算类,包含两个属性:数字A和数字B,还有一个获取结果的虚方法GetResult方便获取运算结果

    /// <summary>
    /// 运算类
    /// </summary>
    public class Operation
    {
        public double NumberA { get; set; }

        public double NumberB { get; set; }

        public virtual double GetResult()
        {
            var result = 0;

            return result;
        }
    }

  然后我们编写加法运算和减法运算类,让其集成运算类,重写GetResult类实现不同的运算结果(如果我们以后要增加其他运算方法,只需要新增一个继承Operation的运算类,而无需变动已经写好的加法和减法运算类)

    /// <summary>
    /// 加法运算
    /// </summary>
    public class OperationAdd : Operation
    {
        public override double GetResult()
        {
            return this.NumberA + this.NumberB;
        }
    }

    /// <summary>
    /// 减法运算
    /// </summary>
    public class OperationSub : Operation
    {
        public override double GetResult()
        {
            return this.NumberA - this.NumberB;
        }
    }

  定义一个简单运算工厂,到底要实例化谁,将来是否要新增实例化对象,比如除法、乘法等。这些都交给简单运算工厂来实现,以后若有变化要动也只需要改动工厂这块就好了,而不是整个项目去搜索一遍实例化运算类的代码

    /// <summary>
    /// 简单运算工厂
    /// </summary>
    public class OperationFactory
    {
        public static Operation CreateOperation(string operate)
        {
            Operation oper = null;

            switch (operate)
            {
                case "+":
                    oper = new OperationAdd();
                    break;
                case "-":
                    oper = new OperationSub();
                    break;
            }

            return oper;
        }
    }
时间: 2024-10-27 16:29:01

简单工程模式 -- 大话设计模式的相关文章

简单工程模式实例

前言 这几天做了一个应用程序,给项目添加的一个功能.一直想用什么模式来写,基本代码都写完了,还是没有用到模式,前天晚上睡觉中突然觉得就是简单工厂模式,于是代码已经浮现出来.昨天去了公司开始写. 过程 这是简单工厂类图:(图是从网上自己弄的) <大话设计模式>中,这个简单工厂模式,那个基接口是一个类,不是接口.我在写的时候也是写的是类.但是发现很多不可能实现.因为发现很多类,都有各自的字段属性,都不一样.所以没法用这个类,最后还是用了接口,感觉还是接口厉害,多态实现.工厂类跟基类接口的关系是依赖

设计模式C++实现一:简单工程模式

参考大话设计模式和网上的一些资料,自己编写下一些简单的设计模式,让自己了解这些设计模式的妙处! #ifndef OPERATION_H #define OPERATION_H #include<iostream> using namespace std; class Operation { protected: double opA, opB; public: bool SetValue(double& n, double& m); virtual double GetResu

简单工厂模式(设计模式02)

作者:jiankunking 出处:http://blog.csdn.net/jiankunking 1.定义 简单工厂模式(Simple Factory Pattern)属于类的创建型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),但不属于23种GOF设计模式之一,是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 2.基本简介 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个

简单工厂模式(设计模式入门)

学习正式的设计模式前,先来个开胃菜,即简单工厂模式.下面将利用简单工厂模式设计一个计算器小程序: 一.运算基类(Operation) 1 public abstract class Operation 2 { 3 public double NumA { set; get; } 4 public double NumB { set; get; } 5 public virtual double GetResult() 6 { 7 return 0; 8 } 9 } 二.运算方法(+.-) 1 p

简单工程模式

简单工厂模式 定义:专门定义一个类来负责创建其它类的实例,被创建的实例通常都具有共同的父类或接口; 意图:提供一个类,由它负责根据一定的条件创建某一具体类的实例; 1 public class FactoryDemo{ 2 public static void main(String []args){ 3 IFruit fruit = Factory.getFruit("橘子"); 4 if(fruit!=null){ 5 System.out.println(fruit.get())

Python之简单工程模式实现

最近又看了下大话设计模式,决定用Python来试着实现下. 基础类 1 class OperationBase(): 2 """ 3 基础运算类 4 """ 5 result = 0 6 def GetResult(self): 7 return self.result 继承类 1 class OperationAdd(OperationBase): 2 """ 3 加法类,继承基础运算类 4 ""

Java 工厂模式(一)——简单工程模式

一.简单工厂模式示例图: 简单工厂模式是一种最基本的.最简单的工厂模式,来获取对象通过对接口的继承,由工厂决定创建哪个对象,而不是对象自己通过new来创建. 二.简单工厂的个人理解: 优点: 1.便于对象的扩展,比如要创建一个五边形,只需要继承Shape接口即可,在工厂中对增加的类进行注册,既可以通过ShapeFactory来获取到增加的对象. 2.将同一类型的对象进行分装提取,共性都放在接口中,个性放在具体类中. 缺点: 1.不利于不同类型对象的创建,比如现在要增加一个水果类,就需要重写一个接

设计模式(1)--简单工厂模式、策略模式

1. 简单工厂模式 在阎宏博士的<JAVA与模式>一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例. 先放图再解释.下图一是从<大话设计模式>中摘出来的.问题是:用任意一种面向对象语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果. 简单工厂模式实现的关键点有两个: 1. 继承:定义一个抽象父类“抽象产品”(Operation类

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

这几天准备把设计模式好好看一下,顺带着做下笔记,设计模式以前零零散散看过一些,做项目时也用过或见到过一些设计模式,但是可能只是停留在见到那种设计模式时有点印象,有的时候也将名称弄混,希望这次系统学习的机会能让我对设计模式有个更加深刻的印象吧. 这次学习设计模式主要的参考资料有: <大话设计模式> http://www.dofactory.com/net/design-patterns 上面两个都是用C#实现的,但是我准备用C++的代码实现一遍,权当加深下对C++的印象. 首先从最简单的简单工厂