【Java】设计模式(1)—工厂模式

1.设计模式的分类

总体来说设计模式分为三大类:

创建型模式,共五种:工厂方法模式抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

这里我们先来聊聊工厂方法模式。

简单工厂模式、工厂方法模式、抽象工厂模式,都是属于创建型设计模式。严格上来说,简单工厂模式不属于23设计模式之一,因为它违背了开闭原则。

2.简单工厂模式(静态工厂模式)

先弄一个冰淇淋接口+3个口味的冰淇淋实现类

/**
 * 冰淇淋接口、没有具体口味
 * @author xingyanan01-lhq
 */
public interface IceCream {
	public void makeIceCream();

}
/**
 * 苹果口味冰淇淋
 * @author xingyanan01-lhq
 */
public class AppleIceCream implements IceCream{

	@Override
	public void makeIceCream() {
		System.out.println("制作一个苹果口味冰淇淋");
	}

}
/**
 * 橘子口味冰淇淋
 * @author xingyanan01-lhq
 */
public class OrangeIceCream implements IceCream {

	@Override
	public void makeIceCream() {
		System.out.println("制作一个橘子口味冰淇淋");
	}

}
/**
 * 香蕉口味冰淇淋
 * @author xingyanan01-lhq
 */
public class BananaIceCream implements IceCream{

	@Override
	public void makeIceCream() {
		System.out.println("制作一个香蕉口味冰淇淋");
	}

}

造一个冰淇淋工厂,根据不同口味口令KEY来判断具体生产什么口味的冰淇淋

/**
 * 冰淇淋工厂,根据传递的key来返回不同的冰淇淋类
 * @author xingyanan01-lhq
 */
public class IceCreamFactory {
	//这里注意一下,用静态static方法
	public static IceCream creamIceCream(String key){
		IceCream iceCream = null;
		if("apple".equals(key)) {
			iceCream = new AppleIceCream();
		}
		if("orange".equals(key)) {
			iceCream = new OrangeIceCream();
		}
		if("banana".equals(key)) {
			iceCream = new BananaIceCream();
		}
		return iceCream;
	}
}

具体实现:

/**
 * 客户端执行
 * @author xingyanan01-lhq
 */
 public static void main(String[] args) {
    	// 我告诉工厂,我想要个苹果口味冰淇淋
    	IceCream appleIceCream = IceCreamFactory.creamIceCream("apple");
    	appleIceCream.makeIceCream();
    	// 我告诉工厂,我想要个橘子口味冰淇淋
    	IceCream orangeIceCream = IceCreamFactory.creamIceCream("orange");
   
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值