1.1_簡單工廠模式
1.簡單工廠模式是屬於創建型模式,又叫做靜態工廠方法模式。
它的實現方式是由一個工廠類根據傳入的參數,動態決定應該創建哪一個產品類(這些產品類繼承自一個父類或接口)的實例。
2.簡單工廠模式由三種角色組成:
(1)工廠角色:簡單工廠模式的核心,它負責實現創建所有實例的內部邏輯。工廠類的創建產品類的方法可以被外界直接調用,創建所需的產品對象。
(2)抽象產品角色:簡單工廠模式所創建的所有對象的父類,它負責描述所有實例所共有的公共接口。
(3)具體產品角色:是簡單工廠模式的創建目標,所有創建的對象都是充當這個角色的某個具體類的實例。
例如以下實例:生產水果,此時,爲水果類聲明瞭一個接口:
package co.xiaowenzi.study;
public interface Fruit {
// 送給客戶
void send();
}
定義水果種類:蘋果和香蕉
package co.xiaowenzi.study;
public class Apple implements Fruit {
@Override
public void send() {
System.out.println("蘋果準備好了");
}
}
package co.xiaowenzi.study;
public class Banana implements Fruit {
@Override
public void send() {
System.out.println("香蕉準備好了");
}
}
根據需求生產的工廠:
package co.xiaowenzi.study;
public class FruitFactory {
/**
* 水果工廠,等待客戶下單進行生產
* @param which
* @return
* @throwsException
*/
public static Fruit factory(String which) {
// 利用反射來知道那種水果
Fruit fruit = null;
try {
fruit = (Fruit) Class.forName("co.xiaowenzi.study." + which).newInstance();
} catch (InstantiationException e) {
//e.printStackTrace();
} catch (IllegalAccessException e) {
//e.printStackTrace();
} catch (ClassNotFoundException e) {
//e.printStackTrace();
}
returnfruit;
}
}
客戶下單,通知工廠生產:
package co.xiaowenzi.study;
public class FruitCustomer {
@SuppressWarnings("static-access")
public static void main(String[] args){
//客戶下單香蕉,通知工廠生產
FruitFactory fruitFactory = new FruitFactory();
Fruit fruit = fruitFactory.factory("canana");
if(fruit!=null){
fruit.send();
}else{
System.out.println("沒有這種水果");
}
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.