简朴工场形式供应了一个接口可以依据通报的参数的差别建立差别的对象,从而将对象本身的逻辑与对象的建立分脱离。
从设想形式的分类来看简朴工场形式是建立型形式。事实上与简朴工场形式相似的另有工场形式和笼统工场形式。那它们有什么区别呢?
我们从名字入手剖析一下,简朴 ,为何叫简朴工场形式?因为它仅仅只是星散了对象的建立和对象的运用,一旦有新的产物到场,就必须修正简朴工场中对象建立的要领,如许并没有恪守对修正关闭,对扩大开放的准绳。所以这个形式的笼统和星散的还不够完全,比拟而言工场形式就在简朴工场形式的基本之上加了一层对工场的笼统,详细的产物由详细的工场来建立,如许新增产物就只须要新增一个工场就行,并不会对本来的代码产生影响,其次 工场 ,这个对应其建立型形式,用于建立对象。
运用场景
JDK中的东西类
java.tet.DateFormat
,用于格式化一个当地日期或时刻。public final static DateFormat getDateInstance(); public final static DateFormat getDateInstance(int style); public final static DateFormat getDateInstance(int style,Locale locale);
java加密手艺
猎取差别加密算法的秘钥生成器
KeyGenerator keyGen=KeyGenerator.getInstance("DESede");
建立暗码器
Cipher cp=Cipher.getInstance("DESede");
UML图
优瑕玷
长处
简朴工场形式把对象建立的逻辑进行了封装,在运用的对象的时刻不须要相识建立的细节
建立对象可以运用对应的参数来肯定建立的详细对象,而不须要知道对象的类名
瑕玷
因为工场类集中了一切产物建立逻辑,一旦不能一般事情,全部体系都要受到影响。
运用简朴工场形式将会增添体系中类的个数,在肯定程序上增添了体系的庞杂度和明白难度。
体系扩大难题,一旦增加新产物就不得不修正工场逻辑,在产物范例较多时,有可以构成工场逻辑过于庞杂,不利于体系的扩大和保护。
简朴工场形式因为运用了静态工场要领,构成工场角色没法构成基于继续的品级构造。
代码实例
代码地点:simple-factory
迎接人人fork和pull request,愿望人人一同可以可以一同交流学习设想形式,协助我们用javascript写更专业的代码
参考: