欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

设计模式学习笔记04 - Java版之工厂模式

程序员文章站 2024-01-23 18:21:22
...

1. 简单工厂模式

1.1 基本介绍

  1. 简单工厂模式属于创建型模式, 是工厂模式的一种. 简单工厂模式是由一个工厂对象决定创建哪一个产品类的实例, 简单工厂模式是工厂模式家族中最简单实用的模式
  2. 简单工厂模式: 定义一个创建对象的类, 由这个类来封装实例化对象的行为
  3. 软件开发中, 我们大量创建某类 或 某批对象就会用到工行模式

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

下一篇: