一.定義
從設計模式的類型上來說,簡單原廠模式是屬於建立型模式,又叫做靜態Factory 方法(Static Factory Method)模式,但不屬於23種GOF設計模式之一。簡單原廠模式是由一個工廠對象決定建立出哪一種產品類的執行個體。簡單原廠模式是原廠模式家族中最簡單實用的模式,可以理解為是不同原廠模式的一個特殊實現。
二.實現
/**
* 1、定義一個介面 ----抽象產品
* 2、定義實現該介面的類 ----具體產品
* 3、定義一個類將具體產品統一管理,用來對具體產品建立對象做準備----工廠
*
* 抽象產品(介面)
* ↓
* 具體產品(類) ← 工廠(靜態方法)
*
*/
抽象介面Fruit public interface Fruit {
public void plant();
public void grow();
public void harvest();
}
具體產品類
public class Apple implements Fruit{
@Override
public void plant() {
System.out.println("種植蘋果");
}
@Override
public void grow() {
System.out.println("蘋果生長");
}
@Override
public void harvest() {
System.out.println("收穫蘋果");
}
public class Grape implements Fruit {
private boolean seedless;
public boolean isSeedless() {
return seedless;
}
public void setSeedless(boolean seedless) {
this.seedless = seedless;
}
@Override
public void plant() {
System.out.println("種植葡萄");
}
@Override
public void grow() {
System.out.println("葡萄生長");
}
@Override
public void harvest() {
System.out.println("收穫葡萄");
}
}
public class StrawBerry implements Fruit {
@Override
public void plant() {
System.out.println("種植草莓");
}
@Override
public void grow() {
System.out.println("草莓生長");
}
@Override
public void harvest() {
System.out.println("收穫草莓");
}
}
工廠
public class FruitGardner {
/**
* 靜態Factory 方法
*/
public static Fruit factory(String which) throws Exception {
if(which.equalsIgnoreCase("apple")){
return new Apple();
}else if(which.equalsIgnoreCase("grape")){
return new Grape();
}else if(which.equalsIgnoreCase("strawberry")){
return new StrawBerry();
}else {
throw new Exception("水果輸入錯誤");
}
}
}