系列文章
【设计模式】七大设计原则
【设计模式】第一章:单例模式
【设计模式】第二章:工厂模式
【设计模式】第三章:建造者模式
【设计模式】第四章:原型模式
【设计模式】第五章:适配器模式
【设计模式】第六章:装饰器模式
【设计模式】第七章:代理模式
【设计模式】第八章:桥接模式
【设计模式】第九章:外观模式 / 门面模式
【设计模式】第十章:组合模式
【设计模式】第十一章:享元模式
【设计模式】第十二章:观察者模式
【设计模式】第十三章:模板方法模式
【设计模式】第十四章:策略模式
【设计模式】第十五章:责任链模式
【设计模式】第十六章:迭代器模式
【设计模式】第十七章:状态模式
【设计模式】第十八章:备忘录模式
【设计模式】第十九章:访问者模式
【设计模式】第二十章:解释器模式
【设计模式】第二十一章:命令模式
【设计模式】第二十二章:中介者模式
文章目录
一、定义
摘自百度百科:
工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。
工厂模式为我们提供了一种创建对象的最佳方式,最大的特点是我们在创建对象的时候不会对客户端暴露创建逻辑,通过一个共同的接口去指向新创建的对象。
二、实现方式
工厂模式是一种比较统概的说法,实现方式共分为以下几种:
- 简单工厂模式
- 工厂方法模式
- 抽象工厂模式
1. 简单工厂模式
简单工厂模式又叫做
静态工厂模式
,它是由一个工厂来决定创建出哪一种产品的实例。
(1)角色分类
具体工厂
它负责实现创建实例的内部逻辑
,创建方法由外部调用,创建不同的产品
抽象产品
它是所有产品的父类,它负责来描述所有实例的共有的公共接口
具体产品
它是具体被创建的产品,所有被创建的对象都是这个角色下具体某个具体类的实例
(2)应用案例
例如:你肚子饿了,于是你便来到了一家面馆(具体工厂),然后面馆中有各种各样的面(抽象产品),然后可以根据自己的口味来下单合适的面(具体产品)
抽象产品:
/**
* 抽象产品
*/
public interface Noodles {
/**
* 做面
*/
void cook();
}
具体产品
/**
* 拉面
*/
public class Ramen implements Noodles {
@Override
public void cook(){
System.out.println("正在制作拉面...");
}
}
/**
* 汤面
*/
public class SoupNoodles implements Noodles {
@Override
public void cook(){
System.out.println("正在制作汤面...");
}
}
/**
* 炒面
*/
public class StirFriedNoodles implements Noodles {
@Override
public void cook(){
System.out.println("正在制作炒面...");
}
}
具体工厂
/**
* 具体工厂
*/
public class CookFactory {
/**
* 做面
* @param type 面条类型
*/
public static Noodles cookNoodles(String type) {
switch (type) {
case "Ramen":
return