工廠模式與靜態工廠

2021-08-18 16:11:58 字數 2592 閱讀 5712

1、工廠方法模式:定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到其子類。

核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,僅負責具體工廠子類必須實現的介面,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工廠角色的情況下引進新的產品。

2、工廠方法模式由4種角色組成:

(1)抽象工廠(creator)角色:是工廠方法模式的核心,與應用程式無關。任何在模式中建立的物件的工廠類必須實現這個介面。

(2)具體工廠(concrete creator)角色:這是實現抽象工廠介面的具體工廠類,包含與應用程式密切相關的邏輯,並且受到應用程式呼叫以建立產品物件。

(3)抽象產品(product)角色:工廠方法模式所建立的物件的超型別,也就是產品物件的共同父類或共同擁有的介面。

(4)具體產品(concrete product)角色:這個角色實現了抽象產品角色所定義的介面。某具體產品有專門的具體工廠建立,它們之間往往一一對應。

3、工廠方法模式的uml類圖

4、工廠方法和簡單工廠的區別  

工廠方法模式把簡單工廠的內部邏輯判斷移到了客戶端**來進行。

工廠方法模式是簡單工廠模式的衍生,首先完全實現開放-封閉原則,實現了可擴充套件。其次更複雜的層次結構,可以應用於產品結果複雜的場合。

5、下面實現乙個加減乘除的工廠方法模式

package demo8;  

/**

* 工廠介面

* */

inte***ce ifactory

package demo8;

/**

* 具體工廠(concrete creator)角色:加法類工廠

* */

public class addfactory implements ifactory

}

package demo8;

/**

* 具體工廠(concrete creator)角色:減法類工廠

* */

public class subfactory implements ifactory

}

package demo8;

/**

* 具體工廠(concrete creator)角色:乘法類工廠

* */

public class mulfactory implements ifactory

}

package demo8;

/**

* 具體工廠(concrete creator)角色:除法類工廠

* */

public class divfactory implements ifactory

}

package demo8;

/**

* 抽象產品(product)角色:運算類

* */

public abstract class operation

public void setnumberb(double numberb)

public double getnumbera()

public double getnumberb()

public double getresult()

}

package demo8;

/**

* 具體產品(concrete product)角色:加法類

* */

public class operationadd extends operation

}

package demo8;

/**

* 具體產品(concrete product)角色:減法類

* */

public class operationsub extends operation

}

package demo8;

/**

* 具體產品(concrete product)角色:乘法類

* */

public class operationmul extends operation

}

package demo8;

/**

* 具體產品(concrete product)角色:除法類

* */

public class operationdiv extends operation

}

package demo8;

/**

* 客戶端

* */

public class demo8

}

new靜態工廠方法(static factory method)

靜態工廠模式(簡單工廠模式)

靜態工廠模式 簡單工廠模式 用來例項化目標類的靜態類 class.forname 包.類名 要求jvm查詢並載入指定的類,並返回這個類,class.forname 包.類名 newinstance 表返回這個類的例項。package factorydemo 介面.inte ce car3 benz3...

靜態工廠(簡單工廠)模式

靜態工廠,是乙個工廠類,並且改類沒有實現乙個工廠介面或者抽象類。中間採用了反射機制。如下 是乙個簡單的靜態工廠模式 public class testfactory c ca ctory.getcarinstance toyota if c null 工廠類,使用者穿件不同的實現了car藉口的物件例...

java與設計模式 三 簡單工廠模式(靜態工廠)

不多說直接上 1 動物類 package com.itheima.o factorytemp.a factory 抽象動物類 classname animal description todo 這裡用一句話描述這個類的作用 author gyoomi date 2018年2月21日 public a...