码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式-工厂方法模式

时间:2018-05-09 16:02:29      阅读:85      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!