【设计模式】第二章:工厂模式详解及应用案例

系列文章

【设计模式】七大设计原则
【设计模式】第一章:单例模式
【设计模式】第二章:工厂模式
【设计模式】第三章:建造者模式
【设计模式】第四章:原型模式
【设计模式】第五章:适配器模式
【设计模式】第六章:装饰器模式
【设计模式】第七章:代理模式
【设计模式】第八章:桥接模式
【设计模式】第九章:外观模式 / 门面模式
【设计模式】第十章:组合模式
【设计模式】第十一章:享元模式
【设计模式】第十二章:观察者模式
【设计模式】第十三章:模板方法模式
【设计模式】第十四章:策略模式
【设计模式】第十五章:责任链模式
【设计模式】第十六章:迭代器模式
【设计模式】第十七章:状态模式
【设计模式】第十八章:备忘录模式
【设计模式】第十九章:访问者模式
【设计模式】第二十章:解释器模式
【设计模式】第二十一章:命令模式
【设计模式】第二十二章:中介者模式



一、定义

摘自百度百科:
工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bummon.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值