请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

工厂方法的创建

老师好
          JavaVideoFactory通过new JavaVideo()生产实例,JavaVideo的构造器是public,也就对外暴露了。其他人在使用的时候,就可以通过new JavaVideo()直接产生实例,而不是通过JavaVideoFactory,这是工厂方法本身的缺陷么?这个有办法解决么?

         补充:如果将JavaVideo以内部类的形式定义在JavaVideoFactory中,就增了JavaVideo和JavaVideoFactory的耦合吧?JavaVideoFactory的职责就不单一了。这种解决办法是不是不可行?有没有更好的办法?

正在回答

1回答

Geely 2018-08-26 10:27:06

你好,亲爱的 同学

首先第一个问题,是这样的 ,这个在团队开发中可以做一个约定,因为如果把整个Video系列的产品如JavaVideo做成private构造器的话,还要考虑是否这个产品是单例的,如果是单例的可以和工厂结合。

你说的这个点,其实怎么说呢,也不算缺陷,在java权限中控制只能说尽量,例如spring封装的很多东西,我们也可以在外部去new,或者我们项目中的例如一个serviceImpl,也是可以new。人工注入的。所以约定更重要。


如果以内部类的形式定义在JavaVideoFactory中也是可以的,在权限控制会比上面所说的好一些,不过的确是耦合在一块,不过这个case对于单纯的JavaVideo和JavaVideoFactory这种情况这么,个人认为没啥问题。因为这个factory只生成javavideo。


1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信