首页 > 代码库 > 设计模式笔记1:简单工厂模式
设计模式笔记1:简单工厂模式
如果想成为一名更优秀的软件设计师,了解优秀软件设计的演变过程比学习优秀设计本身更有价值。
1.1 面向对象的好处
通过封装、继承多态把程序的耦合度降低,使用设计模式使得程序更加灵活,容易修改,易于复用。
1.2 类图
1.3 代码
几个运算类;
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 设计模式 8 { 9 abstract class Operator10 {11 public double NumberA { get; set; }12 public double NumberB { get; set; }13 public abstract double GetResult();14 }15 16 class Add : Operator17 {18 19 public override double GetResult()20 {21 return NumberA + NumberB;22 }23 }24 25 class Sub : Operator26 {27 public override double GetResult()28 {29 return NumberA - NumberB;30 }31 }32 33 class Mul : Operator34 {35 public override double GetResult()36 {37 return NumberA * NumberB;38 }39 }40 41 class Div : Operator42 {43 public override double GetResult()44 {45 if (NumberA == 0)46 {47 throw new Exception("被除数不用为0");48 }49 return NumberA / NumberB;50 }51 }52 53 }
工厂代码:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 设计模式 8 { 9 class OperationFactory10 {11 public static Operator CreateOperator(string oper)12 {13 switch (oper)14 {15 case "+": return new Add();16 case "-": return new Sub();17 case "*": return new Mul();18 case "/": return new Div();19 default: return null;20 21 }22 }23 }24 }
调用代码:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 设计模式 8 { 9 class Program10 {11 static void Main(string[] args)12 {13 Console.WriteLine("请输入运算数1:");14 double numberA = int.Parse(Console.ReadLine());15 Console.WriteLine("请输入运算数2:");16 double numberB = int.Parse(Console.ReadLine());17 Console.WriteLine("请输入运算符:");18 string oper = Console.ReadLine();19 // 实例化计算结果20 Operator calc=OperationFactory.CreateOperator(oper);21 calc.NumberA=numberA;22 calc.NumberB=numberB;23 Console.WriteLine("结果:" + calc.GetResult());24 Console.ReadKey(true);25 }26 }27 }
1.4 总结
一个简简单单的计算功能。 要用我们的面向对象的思路做,也可以很精彩。 我们把功能定义到了计算的父类中。 然后由不用的子类去重写父类的方法实现不同的功能。两点好处:1、达到了功能的分割和封装。 2、多态,实际调用是调用某个子类的具体实现方法。
而简单工厂类的作用就是帮助我们创建子类对象。 多么简单而又实用的设计。 这就是简单工厂设计模式。
设计模式笔记1:简单工厂模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。