工厂模式:提供创建对象的接口

发布时间 2023-04-17 18:43:58作者: 穆海如枫

1.简单工厂模式

主要是利用了类的继承性;通过接口的子类为接口对象实例化

简单工厂模式创建
// 提供创建对象的接口
public interface Demo {
	public void make(String demoName);
}
// 提供创建对象实例工厂instance1Factory
public class Instance1 implements Demo {
	@Override
	public void make(String demoName) {
		//... 具体实现方法
	}
}
// 提供创建对象实例工厂instance2Factory
public class Instance2 implements Demo {
	@Override
	public void make(String demoName) {
		//... 具体实现方法
	}
}
简单工厂模式调用
    public static void main(String[] args) {
		// 通过使用一个共同的接口来指向新创建的对象。
		Demo demo = new Instance();
		demo.make("something");
    }

2.普通工厂模式

普通工厂模式创建
// 提供创建对象的接口
public interface DemoFactory {
	public Demo makeDemo(String demoName);
}
// 提供创建对象实例工厂instance1Factory
public class Instance1Factory implements DemoFactory {
	@Override
	public Demo makeDemo(String demoName) {
		//... 通过demoName获取对应的Demo子类对象;
	}
}
// 提供创建对象实例工厂instance2Factory
public class Instance2Factory implements DemoFactory {
	@Override
	public Demo makeDemo(String demoName) {
		//... 通过demoName获取对应的Demo子类对象;
	}
}
普通工厂模式调用
    public static void main(String[] args) {
		// 此处设为Instance1Factory和Instance2Factory是创建同一零件的不同工厂;可选择其一工厂进行生产;
		DemoFactory demoFactory = new Instance1Factory();
		Demo instance = demoFactory.makeDemo("name");
    }

小结:普通工厂在使用过程中,可以直接选取合适的工厂创建对应实例;


3.抽象工厂模式

抽象工厂模式创建
// 提供创建对象的接口
public interface studyJavaFactory {
	public void studyIO();
	public void studyThread();
}
// 提供创建对象实例工厂instance1Factory
public class Instance1Factory implements studyJavaFactory {
	@Override
	public void studyIO() {
		//... 具体实现方法,可以返回对应实例
	}
	@Override
	public void studyThread() {
		//... 具体实现方法,可以返回对应实例
	}
}
// 提供创建对象实例工厂instance2Factory
public class Instance2Factory implements studyJavaFactory {
	@Override
	public void studyIO() {
		//... 具体实现方法,可以返回对应实例
	}
	@Override
	public void studyThread() {
		//... 具体实现方法,可以返回对应实例
	}
}
抽象工厂模式调用
    public static void main(String[] args) {
		// 此处设为Instance1Factory和Instance2Factory是同一作者学习Java的视频;ps:举例子太难了;
		DemoFactory demoFactory = new Instance1Factory();
		demoFactory.studyIO();
		demoFactory.studyThread();
    }

当涉及到产品族的时候,就需要引入抽象工厂模式。
普通工厂模式和抽象工厂模式主要是在于分类不一致,主要是通过统一工厂创建产品零件解决了产品兼容性问题:
抽象工厂模式主要是为了统一品牌下产品所需要创建的产品零件进行划分,普通工厂模式则是为了创建同类型不同品牌的产品零件进行划分;
如果抽象工厂模式只存在一个方法,则与普通工厂模式无异;