首页 > 其他 > 详细

设计模式01——工厂模式

时间:2020-08-16 19:54:27      阅读:86      评论:0      收藏:0      [点我收藏+]

设计模式是一种思维,一种态度,一种进步

设计模式的基本要素

  • 模式名称
  • 问题
  • 解决方案
  • 效果

对系统的灵活性,移植性,可扩展性的影响

创建型模式:

  • 单例模式,工厂模式,抽象工厂模式,建造者模式,原型模式

结构型模式

  • 适配器模式,桥接模式,装饰模式,组合模式,外观模式,享元模式,代理模式

行为型模式

  • 模板方法模式,命令模式,迭代器模式,观察者模式,中介者模式,备忘录模式,解释器

    模式,状态模式,策略模式,职责链模式,访问者模式

面向对象七大原则(OOP)

  • 开闭原则:对扩展开放,对修改关闭

  • 里氏替换原则:继承必须确保超类所拥有的性质在子类中依然成立(尽量不重写父类)

  • 依赖倒置原则:要面向接口编程,不要面向现实编程。(以此降低程序之间的耦合性)

    • 高层的模块不应该依赖底层的模块
    • 抽象不应该依赖于细节,细节应该依赖于抽象
  • 单一职责原则:控制类的力度大小,将对象解耦,提高内聚性

    • 一个对象不应该承担太多职责,一个方法就干好一件事情
  • 接口隔离原则:要为各个类建立它们需要的专用接口(精简,单一)

  • 迪米特法则:只与你的直接朋友交谈,不要和陌生人说话

    • A和B是朋友,B和C是朋友,A和C不认识,那么A就不应该直接联系C
    • 降低耦合性,增加模块的独立性
    • 会增加一定的复杂性与清晰性
  • 合成复用原则:尽量先使用组合或聚合等关联关系来实现,其次才考虑使用继承关系来实现。

    • 组合是has a的关系。比如人是由头,手,脚等组成,那么people has a head的关系
    • 继承是is a的关系。比如dog is animal

工厂模式

详细分类

  • 简单工厂模式
    • 用来生产同一等级结构中的任意产品(对于增加新的产品,需要覆盖已有代码)
  • 工厂方法模式
    • 用来生产同一等级结构中的固定产品(支持增加任意产品)
  • 抽象工厂模式
    • 围绕一个超级工厂创建其他工厂,该超级工厂又称为其他工厂的工厂

核心本质:

  • 实力话对象不适用new,用工厂方法替代
  • 从而将调用者跟我们的实现类解耦合。将选择实现类,创建对象统一管理和控制。

简单工厂模式

技术分享图片 技术分享图片

不使用简单工厂模式,则需要了解具体类的参数,方法,返回值等。使用工厂模式,具体实现交给工厂模式既可,而不用关心具体实现以及参数等。

简单工厂模式的缺点是,如果新增了一种类型的汽车,那么需要修改工厂类的代码,而这就违反了开闭原则。所以简单工厂模式又称为静态工厂模式。

工厂方法模式

技术分享图片

需要实现汽车接口和工厂接口,如果新增车型,需要新增对应车型的工厂类,无需修改汽车接口和工厂接口的方法。

对比简单工厂模式(simple)与工厂方法(method)模式胜出者:

  • 结构复杂度:simple
  • 代码复杂度:simple
  • 编程复杂度:simple
  • 管理复杂度:simple
  • 根据设计原则:工厂方法模式
  • 根据实际业务:简单工厂模式

小结

  • 简单工厂模式(静态工厂模式)
    • 虽然某种程度上不符合设计模式,但实际使用最多。
  • 工厂方法模式
    • 不修改已有类的前提下,通过增加新的工厂类实现扩展。
  • 抽象工厂模式
    • 不可以增加产品,可以增加产品族

设计模式01——工厂模式

原文:https://www.cnblogs.com/liuhuan086/p/13513669.html

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