我喜欢简单、粗犷、暴力、有说服力的方式 ヾ(⌐■_■)ノ
笔记一下,不能入围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 "红旗";
}
}
就是这么粗犷、暴力
网友评论