我喜歡簡單、粗獷、暴力、有說服力的方式 ヾ(?■_■)ノ
筆記一下,不能入圍GOF的23種設計模式的第24種設計模式
學習地址,膜拜大神
定義:從設計模式的類型上來說,簡單工廠模式是屬于創建型模式,又叫做靜態工廠方法(Static Factory Method)模式,但不屬于23種GOF設計模式之一。
簡單工廠模式是由一個工廠對象決定創建出哪一種產品類的實例。簡單工廠模式是工廠模式家族中最簡單實用的模式,可以理解為是不同工廠模式的一個特殊實現。
既然是工廠對吧!那就開始生產東西了,以下汽車為例
package com.yexue.example.design_mode.single_factory;
public class Test {
public static void main(String[] args) {
/**
* 需求:我要一輛寶馬
* 實現:調用汽車工廠生產寶馬
*/
ICar car = CarFactory.createCar("BaoMa");
System.out.println(car.biaozhi());
}
}
然后找到汽車工廠準備生產汽車了
package com.yexue.example.design_mode.single_factory;
/***
* 簡單工廠模式
* @author yexue
* @expl 車的工廠類
* @time 2017年8月31日 下午2:38:00
*/
public class CarFactory {
private CarFactory(){}
/**
* 以寶馬和紅旗為例
* @param type
* @return
*/
public static ICar createCar(String type) {
if(type.equals("BaoMa")){//寶馬
return new BaoMaCar();
}else if(type.equals("HongQi")){
return new HongQiCar();//紅旗
}else{
throw new RuntimeException();
}
}
}
生產汽車的按照汽車的樣子來生產
汽車模型
package com.yexue.example.design_mode.single_factory;
/**
* 簡單工廠模式
*
* @author yexue
* @expl 車模型
* @time 2017年8月31日 下午2:36:52
*/
public interface ICar {
/**
* 車標
*/
public String biaozhi();
//其他車的屬性
//車門、大燈、玻璃、座位、輪胎、發動機....
}
按照車模型產出來的汽車
寶馬
package com.yexue.example.design_mode.single_factory;
/**
* 簡單工廠模式
* @author yexue
* @expl 寶馬
* @time 2017年8月31日 下午2:57:26
*/
public class BaoMaCar implements ICar{
@Override
public String biaozhi() {
return "寶馬";
}
}
紅旗
package com.yexue.example.design_mode.single_factory;
/**
* 簡單工廠模式
* @author yexue
* @expl 紅旗
* @time 2017年8月31日 下午2:56:30
*/
public class HongQiCar implements ICar{
@Override
public String biaozhi() {
return "紅旗";
}
}
就是這么粗獷、暴力