我喜歡簡(jiǎn)單、粗獷、暴力、有說服力的方式 ヾ(?■_■)ノ
筆記一下,不能入圍GOF的23種設(shè)計(jì)模式的第24種設(shè)計(jì)模式
學(xué)習(xí)地址,膜拜大神
定義:從設(shè)計(jì)模式的類型上來(lái)說,簡(jiǎn)單工廠模式是屬于創(chuàng)建型模式,又叫做靜態(tài)工廠方法(Static Factory Method)模式,但不屬于23種GOF設(shè)計(jì)模式之一。
簡(jiǎn)單工廠模式是由一個(gè)工廠對(duì)象決定創(chuàng)建出哪一種產(chǎn)品類的實(shí)例。簡(jiǎn)單工廠模式是工廠模式家族中最簡(jiǎn)單實(shí)用的模式,可以理解為是不同工廠模式的一個(gè)特殊實(shí)現(xiàn)。
既然是工廠對(duì)吧!那就開始生產(chǎn)東西了,以下汽車為例
package com.yexue.example.design_mode.single_factory;
public class Test {
public static void main(String[] args) {
/**
* 需求:我要一輛寶馬
* 實(shí)現(xiàn):調(diào)用汽車工廠生產(chǎn)寶馬
*/
ICar car = CarFactory.createCar("BaoMa");
System.out.println(car.biaozhi());
}
}
然后找到汽車工廠準(zhǔn)備生產(chǎn)汽車了
package com.yexue.example.design_mode.single_factory;
/***
* 簡(jiǎn)單工廠模式
* @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();
}
}
}
生產(chǎn)汽車的按照汽車的樣子來(lái)生產(chǎn)
汽車模型
package com.yexue.example.design_mode.single_factory;
/**
* 簡(jiǎn)單工廠模式
*
* @author yexue
* @expl 車模型
* @time 2017年8月31日 下午2:36:52
*/
public interface ICar {
/**
* 車標(biāo)
*/
public String biaozhi();
//其他車的屬性
//車門、大燈、玻璃、座位、輪胎、發(fā)動(dòng)機(jī)....
}
按照車模型產(chǎn)出來(lái)的汽車
寶馬
package com.yexue.example.design_mode.single_factory;
/**
* 簡(jiǎn)單工廠模式
* @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;
/**
* 簡(jiǎn)單工廠模式
* @author yexue
* @expl 紅旗
* @time 2017年8月31日 下午2:56:30
*/
public class HongQiCar implements ICar{
@Override
public String biaozhi() {
return "紅旗";
}
}
就是這么粗獷、暴力
