- 主要思想:
public static Operation CreateFactory(string ope)
{
//实例化空父类,让父类指向子类
Operation op = null;
switch (ope)
{
case "+":
op = new OperationAdd();//父类指向OperationAdd这个子类,并调用子类中的加法
break;
case "-":
op = new OperationSub();//父类指向OperationSub这个子类,并调用子类中的减法
break;
}
return op;
}
- 相关源码:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 ?7 namespace FactoryModel 8 { 9 ????//====================使用C#,利用简单工厂模式,实现简单的计算器功能====================10 ????//考察时知识点:面向对象三大特性——继承、封装、多态11 ????/// <summary>12 ????/// 1.定义父类,同时也是一个封装13 ????/// </summary>14 ????class Operation15 ????{16 ????????//2.因为要让子类能够对父类进行访问,故应要将参数定义为受保护的变量类型17 ????????protected int numberA;18 ????????protected int numberB;19 ????????//定义属性(必写)20 ????????public int NumberA21 ????????{22 ????????????get { return numberA; }23 ????????????set { numberA = value; }24 ????????}25 ????????public int NumberB26 ????????{27 ????????????get { return numberB; }28 ????????????set { numberB = value; }29 ????????}30 ????????//3.封装虚方法,以供子类进行重写31 ????????public virtual int getResule()32 ????????{33 ????????????int result = 0;34 ????????????return result;35 ????????}36 ????}37 ????/// <summary>38 ????/// 4.定义子类,继承父类,并对父类进行重写(加法)39 ????/// </summary>40 ????class OperationAdd : Operation41 ????{42 ????????public override int getResule()43 ????????{44 ????????????return numberA + numberB;45 ????????}46 ????}47 ????//5.定义子类,继承父类,并对父类进行重写(减法)48 ????class OperationSub : Operation49 ????{50 ????????public override int getResule()51 ????????{52 ????????????return numberA - numberB;53 ????????}54 ????}55 ????//6.创建简单工厂模式56 ????class Factory57 ????{58 ????????/// <summary>59 ????????/// 封装返回值类型为上面“父类型”——Operation类型的方法60 ????????/// </summary>61 ????????/// <param name="ope">ope是指运算的类型,如+、-、*、/</param>62 ????????/// <returns></returns>63 ????????public static Operation CreateFactory(string ope)64 ????????{65 ????????????//实例化空父类,让父类指向子类66 ????????????Operation op = null;67 ????????????switch (ope)68 ????????????{69 ????????????????case "+":70 ????????????????????op = new OperationAdd();//父类指向OperationAdd这个子类,并调用子类中的加法71 ????????????????????break;72 ????????????????case "-":73 ????????????????????op = new OperationSub();//父类指向OperationSub这个子类,并调用子类中的减法74 ????????????????????break;75 ????????????}76 ????????????return op;77 ????????}78 ????}79 ????//7.主函数中进行调用80 ????class Program81 ????{82 ????????static void Main(string[] args)83 ????????{84 ????????????//要用哪种运算,只需将参数传入工厂中的方法中,工厂将会自动调用相关的方法,85 ????????????//即(父类指向相应的子类,从而调用相应的方法),进行相应的运算86 ????????????Operation op = Factory.CreateFactory("+");87 ????????????op.NumberA = 10;88 ????????????op.NumberB = 30;89 ????????????//调用父类中的方法来获取结果90 ????????????int result = op.getResule();91 ????????????Console.WriteLine(result);92 ????????????Console.ReadKey();93 ????????}94 ????????//如果在后续的编程中仍需要有其他的运算,则只需要在子类中加上相应的子类,95 ????????//并在工厂中加上相应的case情况即可,这也就是简单工厂的“利”所在96 ????}97 }
Asp.Net 设计模式 之 “简单工厂”模式
原文地址:http://www.cnblogs.com/pang951189/p/7805073.html