编程时一门技术,更是一门艺术
简单工厂模式利用面向对象方式通过继承、封装、多态把程序的耦合度降低,设计模式使得程序更加灵活,容易修改,易于复用。
下面是服务器计算器代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DesignModel { /// <summary> /// 计算器 /// </summary> public class Calculator //创建一个计算器的基类可以接受两个参数,任何算法只需重写计算结果方法即可。 { private double _numberA; private double _numberB; public double NumberA { get { return this._numberA; } set { this._numberA = value; } } public double NumberB { get { return this._numberB; } set { this._numberB = value; } } public virtual double GetResult() { double result = 0; return result; } } /// <summary> /// 加法 /// </summary> public class Add : Calculator //每添加一种计算方式只需添加一个计算类并重写基类方法即可 { public override double GetResult() { return NumberA + NumberB; } } /// <summary> /// 减法 /// </summary> public class Sub : Calculator { public override double GetResult() { return NumberA + NumberB; } } /// <summary> /// 计算器工厂 /// </summary> public class CalculatorFactory { public static Calculator GetResult(string oper) { Calculator calcu = null; switch (oper) { case "+": calcu = new Add(); break; case "-": calcu = new Sub(); break; } return calcu; } } }
static void Main(string[] args) { Console.WriteLine("请输入数字A:"); string numbera = Console.ReadLine(); Console.WriteLine("请输入运算符:"); string oper = Console.ReadLine(); Console.WriteLine("请输入数字B:"); string numberb = Console.ReadLine(); Calculator c = CalculatorFactory.GetResult(oper); c.NumberA = Convert.ToDouble(numbera); c.NumberB = Convert.ToDouble(numberb); Console.WriteLine(string.Format("{0}{1}{2}={3}", numbera, oper, numberb, c.GetResult())); Console.ReadLine(); }
基本验证没加,学习练习的同学可以自己加上
28种设计模式后续更新
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DesignModel { /// <summary> /// 计算器 /// </summary> public class Calculator //创建一个计算器的基类可以接受两个参数,任何算法只需重写计算结果方法即可。 { private double _numberA; private double _numberB; public double NumberA { get { return this._numberA; } set { this._numberA = value; } } public double NumberB { get { return this._numberB; } set { this._numberB = value; } } public virtual double GetResult() { double result = 0; return result; } } /// <summary> /// 加法 /// </summary> public class Add : Calculator //每添加一种计算方式只需添加一个计算类并重写基类方法即可 { public override double GetResult() { return NumberA + NumberB; } } /// <summary> /// 减法 /// </summary> public class Sub : Calculator { public override double GetResult() { return NumberA + NumberB; } } /// <summary> /// 计算器工厂 /// </summary> public class CalculatorFactory { public static Calculator GetResult(string oper) { Calculator calcu = null; switch (oper) { case "+": calcu = new Add(); break; case "-": calcu = new Sub(); break; } return calcu; } } }
本文就是.net设计模式中的简单工厂模式的内容了,非常简单,下一篇,我们来谈谈策略模式
本文向大家介绍浅析Python 简单工厂模式和工厂方法模式的优缺点,包括了浅析Python 简单工厂模式和工厂方法模式的优缺点的使用技巧和注意事项,需要的朋友参考一下 前言 在《设计模式》一书中工厂模式提到了: 工厂方法模式(Factory Method) 抽象工厂模式 (Abstract Factory) 但是在实际过程中还有一种工厂模式经常被使用,那就是 简单工厂模式(Simple Facto
本文向大家介绍浅析php工厂模式,包括了浅析php工厂模式的使用技巧和注意事项,需要的朋友参考一下 本系列文章来总结一下设计模式在PHP中的应用,这是第二篇创建型模式之工厂模式。 设计模式的一般介绍在第一篇文章讲了,这里就不重复。 工厂模式 实现:定义一个用于创建对象的接口,让子类决定实例化哪一个类。 应用场景:众多子类并且会扩充、创建方法比较复杂。 工厂模式分为三种:简单工厂、工厂方法、抽象工厂
活字印刷 面向对象 话说三国时期,曹操带领百万大军攻打东吴,大军在长江赤壁驻扎,军船连成一片,眼看就要灭掉东吴,统一天下,曹操大悦,于是大宴众文武,在酒席间,曹操诗兴大发,不觉吟道:喝酒唱歌,人生真爽。众文武齐呼:“丞相好诗!于是一臣子速命印刷工匠刻板印刷,以便流传天下。” 样张出来给曹操一看,曹操感觉不妥,说到:“喝与唱,此话过俗,应该为‘对酒当歌’较好!”,于是此臣就命工匠重新来过。工匠眼看连
本文向大家介绍Java设计模式之工厂模式分析【简单工厂、工厂方法、抽象工厂】,包括了Java设计模式之工厂模式分析【简单工厂、工厂方法、抽象工厂】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java设计模式之工厂模式。分享给大家供大家参考,具体如下: 一、 简单工厂 先来思考一个问题。我们平时写程序时,会有这种情况,A对象里面需要调用B对象的方法,这时我们使用的一般是new关键字来创建
//抽象类 enum SpliterType { BinaryType = 0, TxtYype = 1 }; class ISplitter { public: virtual void split() = 0; virtual ~ISplitter() {} }; //具体类 class BinarySplitter : public ISplitter { public: voi
一、简单工厂模式简介 1.定义 简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 2.使用动机 考虑一个简单的软件应用场景:一个软件系统可以提供多个外观不同的