首页 > 其他 > 详细

设计模式-工厂方法模式

时间:2018-05-09 15:55:17      阅读:125      评论:0      收藏:0      [点我收藏+]
public interface IYunSuan { double getResult(int num1, int num2); } public class jia : IYunSuan { public double getResult(int num1, int num2) { return num1 + num2; } } public class jian : IYunSuan { public double getResult(int num1, int num2) { return num1-num2; } } public class cheng : IYunSuan { public double getResult(int num1, int num2) { return num1*num2; } } public class chu : IYunSuan { public double getResult(int num1, int num2) { if (num2 == 0) return 0; return num1/num2; } } ////////////// //简单工厂,专门生产对象 public static IYunSuan createYunSuanObj(string type) { switch (type) { case "+":return new jia(); case "-": return new jian(); case "*": return new cheng(); case "/": return new chu(); } return null; } //工厂方法模式,把简单工厂分解 public interface IFactory { IYunSuan createYunSuanObj(); } public class jiaFactory : IFactory { public IYunSuan createYunSuanObj() { return new jia(); } } public class jianFactory : IFactory { public IYunSuan createYunSuanObj() { return new jian(); } } public class chengFactory : IFactory { public IYunSuan createYunSuanObj() { return new cheng(); } } public class chuFactory : IFactory { public IYunSuan createYunSuanObj() { return new chu(); } } 前端: static void Main(string[] args) { //简单工厂模式 //var jia=simpleFactory.createYunSuanObj("+"); //var result=jia.getResult(1,2); //Console.WriteLine(result); //Console.ReadLine(); //工厂方法模式 IFactory factory = new jiaFactory(); var jia=factory.createYunSuanObj(); var result=jia.getResult(1, 2); Console.WriteLine(result); Console.ReadLine(); }

总结:是基于简单工厂的扩展模式,解耦了简单工厂的工厂类,符合了几大原则
优点:解耦
缺点:代码量增加N多,让人蛋疼。

技术分享图片

设计模式-工厂方法模式

原文:http://blog.51cto.com/5591787/2114417

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!