设计模式之工厂模式

82 阅读1分钟

简单工厂模式

适用于工厂类负责创建的对象较少的场景,且客户端只需要传入工厂类的参数,对于如何创建对象不需要关心

// 课程接口
public interface ICourse {
	public void record();
}
// 课程实现类I
public class JavaCounre implements ICourse{
	public void record() {
    	System.out.println("record Java Course");
    }
}
// 课程实现类II
public class PythonCourse implements ICourse {
	public void record() {
    	System.out.println("record Python Course");
    }
}

// 利用反射的技术实现工厂类
public class CourseFactory {
	public ICourse create(Class<? extends ICourse> clazz) {
    	try {
        	if(null != clazz) return clazz.newIntance();
        } catch(Exception e) {
        	e.printStackTrace();
        }
    }
}

工厂方法模式

在简单工厂模式中,随着产品数量的不断丰富,如果每个课程的创建逻辑 有区别,则工厂的职责会变得越来越多,不利于维护

在工厂方法模式中,将职能继续拆分,需要创建对象时通过对应的工厂子类来创建

// 工厂接口
public interface ICourseFactory {
	ICourse create();
}

// 子工厂
public class JavaCourseFactory implements ICourseFactory {
	ICourse create() {
    	return new JavaCourse();
    }
}

抽象工厂模式

两个概念:产品等级结构和产品族

产品族:美的的多种家电

产品族:不同品牌的同一种家电

每一个品牌有自己独立的工厂

相对于工厂方法,抽象工厂模式中可以创建多个种类的产品

总结:简单工厂模式中可以根据用户的需求创建同一种不同类的产品,但是不适用于多类产品中创建的逻辑不同的情形,这个时候就需要工厂方法模式,而抽象工厂模式是在工厂方法的基础上,提供了生产不同种产品的功能