设计模式学习笔记04 - Java版之工厂模式
程序员文章站
2024-01-23 18:21:22
...
1. 简单工厂模式
1.1 基本介绍
- 简单工厂模式属于创建型模式, 是工厂模式的一种. 简单工厂模式是由一个工厂对象决定创建哪一个产品类的实例, 简单工厂模式是工厂模式家族中最简单实用的模式
- 简单工厂模式: 定义一个创建对象的类, 由这个类来封装实例化对象的行为
- 软件开发中, 我们大量创建某类 或 某批对象就会用到工行模式
1.2 案例:
package com.liyang;
// Step1: 披萨有很多种, 我们做一个抽象类, 然后让别的来泛化它
public abstract class Pizza {
// 制作披萨
public void make(){
}
// 打包披萨
public void box() {
}
}
package com.liyang;
public class CheesePizza extends Pizza {
@Override
public void make() {
System.out.println("制作奶酪披萨...");
}
@Override
public void box() {
System.out.println("打包奶酪披萨...");
}
}
package com.liyang;
public class GreekPizza extends Pizza {
@Override
public void make() {
System.out.println("制作Greek披萨...");
}
@Override
public void box() {
System.out.println("打包Greek披萨...");
}
}
package com.liyang;
// Step2: 销售披萨的店铺, 做成一个类
public class PizzaStore {
public static void main(String[] args) {
OrderPizza orderPizza = new OrderPizza(new SingletonFactory());
orderPizza.useFactory();
}
}
package com.liyang;
// Step3: PizzaStore类 和 Pizza类之间是订购的关系, 做成一个订购类
public class OrderPizza {
SingletonFactory singletonFactory = null;
public OrderPizza(SingletonFactory singletonFactory) {
this.singletonFactory = singletonFactory;
}
public void useFactory() {
singletonFactory.makePizza("GreekPizza");
}
}
package com.liyang;
// Step4: OrderPizza类如果直接和Pizza类发生关系, 那么假设现在增加了一种新型披萨
// 那么我们首先会增加一个 新型披萨类 让他去实现Pizza, 然后将OrderPizza类的代码改变
// 但是现在有1万中OrderPizza(手机订购, 实体店购买, 饿了么, 美团...), 这1万个全改吗??
// 所以我们在这里做一个简单工厂来解决这种问题...
public class SingletonFactory {
Pizza pizza = null;
public void makePizza(String pizzaType) {
if (pizzaType == "CheesePizza") {
pizza = new CheesePizza();
} else if (pizzaType == "GreekPizza") {
pizza = new GreekPizza();
} else {
System.out.println("不好意思, 没有这种类型...");
}
pizza.make();
pizza.box();
}
}
2. 工厂方法模式
上一篇: clock