工厂方法的创建

来源:4-3 简单工厂JDK源码解析

smile_小肥仔

2018-08-24

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

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

写回答

1回答

Geely

2018-08-26

你好,亲爱的 同学

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

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


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


1
0

Java设计模式精讲-Debug方式+内存分析

系统学习设计原则,设计模式,锤炼编码内功,赢取高薪Offer

3430 学习 · 407 问题

查看课程