简单工厂模式

来源:2-1 讲解工厂模式

qq_心晴_29

2019-11-05 12:20:45

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

写回答

4回答

好帮手慕小班

2019-11-07

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

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

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

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

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

http://img.mukewang.com/climg/5dc393270992b5ab05620209.jpg

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

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

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

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

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

0

好帮手慕小班

2019-11-06

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

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

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

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

0
hq_心晴_29
h 懂啦懂啦,那简单工厂模式还违背了里氏替换原则和依赖反转原则,接口隔离的话,这里没有涉及到接口,所以没有关系,这样理解对吗?老师,能不能挨个解释一下,感觉solid理解不到位,谢谢
h019-11-07
共1条回复

好帮手慕小班

2019-11-06

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

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

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

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

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

0
hq_心晴_29
h 谢谢老师。简单工厂模式可以根据分支选择创建多个实例化对象,是不是可以认为违反了单一职责原则?
h019-11-06
共1条回复

好帮手慕小班

2019-11-05

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

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

0
hq_心晴_29
h  为什么呢?只违反了开闭原则吗?
h019-11-06
共1条回复

0 学习 · 8016 问题

查看课程