HTML5技术

详解设计模式之工厂模式(简单工厂+工厂方法+抽象工厂) - 请叫我头头哥(4)

字号+ 作者:H5之家 来源:博客园 2015-10-23 10:52 我要评论( )

namespace CNBlogs.DesignPattern.Common{ 跑车 SportCar : AbstractCar{ ; ; 重写基类的Type属性 Type{ get { return type;}} 重写基类的Color属性 Color{ get { return color;}}} 运动背包 SportBackpack : Abstr

namespace CNBlogs.DesignPattern.Common { 跑车 SportCar : AbstractCar { ; ; 重写基类的Type属性 Type { get { return type; } } 重写基类的Color属性 Color { get { return color; } } } 运动背包 SportBackpack : AbstractBackpack { ; ; 重写基类的Type属性 Type { get { return type; } } 重写基类的Color属性 Color { get { return color; } } } } //具体产品可以有很多很多, 至于越野类的具体产品这里就不列出来了。

创建装备代码: 

namespace CNBlogs.DesignPattern.Common { public class CreateEquipment { private AbstractCar fanCar; private AbstractBackpack fanBackpack; public CreateEquipment(AbstractEquipment equipment) { fanCar = equipment.CreateCar(); fanBackpack = equipment.CreateBackpack(); } public void ReadyEquipment() { Console.WriteLine(, fanBackpack.Color, fanBackpack.Type, fanCar.Color, fanCar.Type )); } } }

客户端代码: 

//------------------------------------------------------------------------------ // <copyright file="Program.cs" company="CNBlogs Corporation"> // Copyright (C) 2015-2016 All Rights Reserved 作 者: 请叫我头头哥 // </copyright> CNBlogs.DesignPattern { using System; using System.Configuration; using System.Reflection; using CNBlogs.DesignPattern.Common; class Program { static void Main(string[] args) { <add key="assemblyName" value="CNBlogs.DesignPattern.Common"/> //<add key="nameSpaceName" value="CNBlogs.DesignPattern.Common"/> //<add key="typename" value="SportEquipment"/> assemblyName = ConfigurationManager.AppSettings[]; ], , ConfigurationManager.AppSettings[]); AbstractEquipment factory = (AbstractEquipment)Assembly.Load(assemblyName).CreateInstance(fullTypeName); CreateEquipment equipment = new CreateEquipment(factory); equipment.ReadyEquipment(); Console.Read(); } } }

抽象工厂模式符合了六大原则中的开闭原则、里氏代换原则、依赖倒转原则等等

7.抽象工厂的优点/缺点: 

  • 优点:
  • 缺点:增加新的产品等级结构很复杂,需要修改抽象工厂和所有的具体工厂类,对“开闭原则”的支持呈现倾斜性。(不过说这个缺点好像有点吹毛求疵了)
  • v博客总结

    这篇博文从晚上下班7点到家一直写到现在,说了一晚上的工厂,也扯了一晚上的速度与激情,在本博文完结的最后,给大家来一张速度与激情的画面精彩照。(ps:是不是觉得这种画面再配上一曲DJ一瓶啤酒会更嗨啊?哈哈...)

    我们使用设计模式目的无非只有三个:a)缩短开发时间;b)降低维护成本;c)在应用程序之间和内部轻松集成。具体什么时候使用何种设计模式还得因项目而异。之所以对设计模式旧调重弹只是希望这个博文能对自己的架构之路有所提升,同时如果能帮助到其他人那就更完美了。

     


    作  者:请叫我头头哥
    出  处:
    关于作者:专注于微软平台的项目开发。如有问题或建议,请多多赐教!
    版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
    特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我
    声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【】一下。您的鼓励是作者坚持原创和持续写作的最大动力!

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • 设计模式(1)单例模式(Singleton) - Fonour

      设计模式(1)单例模式(Singleton) - Fonour

      2017-04-23 12:00

    • ASP.NET Core MVC 源码学习:详解 Action 的激活 - Savorboard

      ASP.NET Core MVC 源码学习:详解 Action 的激活 - Savorboard

      2017-04-14 13:04

    • EntityFramework Core并发深挖详解,一纸长文,你准备好看完了吗? - Jeffcky

      EntityFramework Core并发深挖详解,一纸长文,你准备好看完了吗? -

      2017-04-05 14:03

    • ASP.NET Core MVC 源码学习:详解 Action 的匹配 - Savorboard

      ASP.NET Core MVC 源码学习:详解 Action 的匹配 - Savorboard

      2017-03-30 18:02

    网友点评
    t