简单工厂模式

简单工厂模式

简单工厂模式违背了solid原则中的哪几项?

正在回答

登陆购买课程后可参与讨论,去登陆

4回答

同学你好,1、这里案例中,简单工厂并没有涉及子类扩展父类功能的里氏替换原则,高级模块不依赖低级模块依赖倒置原则等内容,所以也就不存在违反了。

    2、设计模式中的SOLID原则-->分别是单一原则、开闭原则、里氏替换原则、接口隔离原则、依赖倒置原则:

           1) 单一原则:指的是一个类或者一个方法只做一件事,比如:餐厅服务员负责把订单给厨师去做,而不是服务员又要订单又要炒菜。

           2)开闭原则:对扩展开放,对修改关闭。就是一个类独立之后就不应该去修改它,而是以扩展的方式适应新需求。

        比如:做了普通计算器程序,突然添加新需求,要再做一个程序员计算器,这时不应该修改普通计算器内部,应该使用面向接口编程,组合实现扩展。

http://img1.sycdn.imooc.com//climg/5dc393270992b5ab05620209.jpg

        3)里氏替换原则:子类可以扩展父类的功能,但不能改变父类原有的功能,比如:机动车必须有轮胎和发动机,子类宝马车和奔驰车不能没有轮胎属性或者没有发动机属性。

        4)接口隔离原则:类不应该依赖不需要的接口,知道越少越好。比如:电话接口只约束接电话和挂电话,不需要让依赖者知道还有通讯录。

        5)依赖倒置原则:高级模块不应该依赖低级模块,而是依赖抽象,就好像垃圾收集器不管垃圾是什么类型,要是垃圾就行,而不是必须要根据可回收垃圾、不可回收垃圾来分别收集。

        一般情况下,一个程序并不会完全遵守SOLID原则,甚至有些设计模式是违反SOLID原则,具体的使用,就要根据开发时的需求来看了。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

好帮手慕小班 2019-11-06 17:36:27

同学你好,1、单一原则-->指的是一个类或者一个方法只做一件事。

    2、简单工厂中-->根据分支选择创建实例化对象,执行这个方法就是根据传入参数执行对应创建的实例对象,比如:课程中的商场冰激凌工厂案例,

    传入草莓味冰激凌的指令,就对应创建-->草莓味冰激凌,传入香草味冰激凌的指令,就创建-->香草味冰激凌,每次根据传入指令执行对应的一次创建任务,它的职责只有一个就是根据传入指令,创建冰激凌,所以它并没有违反单一职责原则。

我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 qq_心晴_29 #1
    懂啦懂啦,那简单工厂模式还违背了里氏替换原则和依赖反转原则,接口隔离的话,这里没有涉及到接口,所以没有关系,这样理解对吗?老师,能不能挨个解释一下,感觉solid理解不到位,谢谢
    2019-11-07 05:33:00
好帮手慕小班 2019-11-06 10:56:37

同学你好,1、简单工厂最大的特点两个:

                    1)、是封装类的实例化操作。

                    2)、是把创建选择(分支选择放在工厂类中)。

    第二个特点当开发时反复增加了产品类,那么这个时候因为第二个特点反复的修改工厂类,那就算是无法满足开闭原则,对多个产品的扩展不利。

        2、根据上面的理解,我们就可以认为简单工厂模式违背了SOLID原则中的开闭原则。如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 qq_心晴_29 #1
    谢谢老师。简单工厂模式可以根据分支选择创建多个实例化对象,是不是可以认为违反了单一职责原则?
    2019-11-06 13:08:15
好帮手慕小班 2019-11-05 15:49:17

同学你好,简单工厂模式违背了SOLID原则中的开闭原则。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 qq_心晴_29 #1
     为什么呢?只违反了开闭原则吗?
    2019-11-06 06:05:05
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师