Java Factory工厂模式

简介

工厂模式是典型的解耦框架,即定义一个用于创建对象的接口,让对象来决定具体实现,上层只需要关注接口的调用即可,对具体实现可屏蔽。

分类

  • 简单工厂模式(Simple Factory)
  • 工厂方法模式(Factory Method)
  • 抽象工厂模式(Abstract Factory)

简单工厂模式

// 创建类
public abstract class Tool {
	public void create();
}
// 创建子类1继承父类
public class Tool1 extends Tool {
	@Override
	public void create() {
		print("tool1");
	}
}
// 创建子类2继承父类
public class Tool2 extends Tool {
	@Override
	public void create() {
		print("tool2");
	}
}
// 创建工厂类
public class ToolFactory() {
	public Tool createTool(String toolType) {
		Tool tool = null;
        switch (toolType) {
            case "tool1":
                tool = new Tool1();
                break;
            case "tool2":
                tool2 = new Tool2();
                break;
            default:
                break;
        }
        return tool;
	}
}
// 调用方式
Tool tool = ToolFactory.createTool("tool1");
tool.create();

工厂方法模式

// 创建基础工厂
public abstract class ToolFactory {
	public Tool createTool()}
// 创建子工厂1
public class Tool1Factory extends ToolFactory {
	@Override
	public Tool createTool() {
		return new Tool1();
	}
}
// 创建子工厂2
public class Tool2Factory extends ToolFactory {
	@Override
	public Tool createTool() {
		return new Tool2();
	}
}
// 调用方式
Tool1Factory.createTool();
Tool2Factory.createTool();

抽象工厂模式

// 创建基础工厂,多个方法
public abstract class ToolFactory {
	public Tool createTool1()public Tool createTool2()}
// 创建子工厂1
public class Tool1Factory extends ToolFactory {
	@Override
	public Tool createTool1() {
		return new Tool1();
	}
	@Override
	public Tool createTool2() {
		return new Tool2();
	}
}
// 创建子工厂2
public class Tool2Factory extends ToolFactory {
	@Override
	public Tool createTool1() {
		return new Tool1();
	}
	@Override
	public Tool createTool2() {
		return new Tool2();
	}
}
// 调用方式
Tool1Factory.createTool1();
Tool1Factory.createTool2();
Tool2Factory.createTool1();
Tool2Factory.createTool2();

总结

  • 简单工厂模式:应用不多
  • 工厂方法模式:通过创建子工厂的模式将原始工厂内的单一方法指向不同的实现,用户可通过不用的工厂类调用同一方法实现不同逻辑
  • 抽象工厂模式:该模式可以实现工厂内多种方法的多种实现,在解耦方面做得最好,最具灵活性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值