欢迎进入某某企业官方网站!
15年专注工业门定制服务
门业优质供应商
免费设计、物流配送
全国咨询热线 :

搜索关键字:
联系我们
咨询电话
售后热线:
邮箱:admin@baidu.com
地址:广东省广州市天河区88号
当前位置:官网首页 > 新闻资讯 > 公司新闻 >
二、工厂模式
作者: 发布日期:2019-11-19 00:20

k8娱乐工厂形式又称为创立形式,它是建目标的一种最佳办法。工厂形式的实质便是用工厂办法替代new操作创立一种实例化目标的办法。

在之前,假如咱们想实例化一个目标simple,一般会想到的办法便是经过结构器来创立simple simple = new simple。可是,假如创立simple实例时所做的初始化作业不是像赋值这样简略的事,可能是很长一段代码,那么每逢你需求创立simple这个目标的时分,你都需求写这一段很长的代码。这样咱们代码的耦合性就会十分高。所以咱们就需求将创立实例的作业和运用运用实例的作业分隔,工厂形式会运用工厂办法将创立实例的作业封装起来。这样咱们在需求调用目标的时分就不需求关怀那些杂乱的实例化问题。

简略工厂形式中有笼统产品类:用来界说详细产品的共有特点,工厂类则担任出产详细产品。

假定咱们需求出产不同品牌的手机

那么咱们能够先来界说一个phone接口

public interface phone {
 string getbrand;
}

然后来创立两个手机品牌:apple和huawei

public class apple implements phone {
 public string getbrand {
 return apple 
}
public class huawei implements phone {
 public string getbrand {
 return huawei 
}

界说一个工厂来出产手机

public class simplefactory {
 public static phone getphone{
 if ){
 return new apple;
 }else if ){
 return new huawei;
 return null;
}

小结:

从简略工厂中咱们能够运用一个静态办法将目标的创立和运用分脱离。咱们只需求调用办法传递参数就能够取得咱们需求的目标。

但咱们会发现简略工厂形式存在一系列问题:

为了处理上述的问题,咱们又运用了一种新的规划形式:工厂办法形式。

工厂办法形式,又称工厂形式、多态工厂形式和虚拟结构器形式,经过界说工厂父类担任界说创立目标的公共接口,而子类则担任生成详细的目标。

将类的实例化延迟到工厂类的子类中完结,即由子类来决议应该实例化哪一个类。

下面咱们将上面简略工厂形式中出产手机的比方修正为运用工厂办法形式

创立笼统工厂类,界说详细工厂的公共接口

public abstract class phonefactory {
 phone getphone;
}

创立详细工厂类,界说创立对应详细产品实例的办法

public class applefactory extends phonefactory {
 public phone getphone {
 return new apple;
public class huaweifactory extends phonefactory {
 public phone getphone {
 return new huawei;
}

外界经过调用详细工厂类的办法,然后出产出不同手机

小结:

长处

缺陷

添加新产品时,除了添加新产品类外,还要供给与之对应的详细工厂类,体系类的个数将成对添加,在必定程度上添加了体系的杂乱度;一起,有更多的类需求编译和运转,会给体系带来一些额定的开支;

尽管确保了工厂办法内的对修正封闭,但关于运用工厂办法的类,假如要替换别的一种产品,依然需求修正实例化的详细工厂类;

笼统工厂是一切形状的工厂形式中最为笼统和最具一般性的一种形状。笼统工厂是指当有多个笼统人物时运用的一种工厂形式。笼统工厂形式能够向客户端供给一个接口,使客户端在不用指定产品的详细情况下,创立多个产品族中的产品目标。

笼统工厂形式相关于工厂办法形式来说,便是工厂办法形式是针对一个产品系列的,而笼统工厂形式是针对多个产品系列的,即工厂办法形式是一个产品系列一个工厂类,而笼统工厂形式是多个产品系列一个工厂类。

假定咱们有两个产品接口phone和computer,每一种产品都支撑多种系列,比方apple和huawei系列。这样每个系列的产品分别是iphone、huawei、macbook、matebook。为了能够在运转时间创立一个系列的产品族,咱们能够为每个系列的产品族创立一个工厂 applefactory和 huaweifactory。每个工厂都有两个办法 getphone 和 getcomputer 并回来对应的产品,能够将这两个办法笼统成一个接口 abstractfactory 。这样在运转时间咱们能够挑选创立需求的产品系列。

详细代码:

abstractfactory:

public abstract class abstractfactory {
 public abstract phone getphone;
 public abstract computer getcomputer;
}

applefactory:

public class applefactory extends abstractfactory {
 public phone getphone {
 return new iphone;
 public computer getcomputer {
 return new macbook;
}

huaweifactory:

public class huaweifactory extends abstractfactory {
 public phone getphone {
 return new huawei;
 public computer getcomputer {
 return new matebook;
}

小结:

长处

最终总结一下工厂办法形式和笼统工厂形式的差异:

相关产品

地址:广东省广州市天河区88号  全国服务热线:  邮箱:admin@baidu.com

备案号: