工厂方法模式和抽象工厂模式都是创建型设计模式,它们的主要区别在于所创建的对象范围不同。 工厂方法模式(Factory Method)通过让子类实现工厂接口,来决定具体应该创建哪一个产品类的实例对象。它允许我们在不改变现有代码基础上添加新的产品类型,并且可以将具体产品的实现与调用方分离开来。 抽象工厂模式(Abstract Factory)...
工厂方法模式是对简单工厂方法模式的一个抽象,抽离出了一个Factory类(或者接口),这个接口不负责具体产品的生产,而只是指定一些规范,具体的生产工作由其子类去完成。这个模式中,工厂类和产品类往往是一一对应的,完全解决了简单工厂模式中违背“开闭原则”的问题,实现了可扩展;抽象工厂模式的特点是存在多个抽象产品类,每...
所以抽象工厂模式一般用于具有产品树和产品族的场景下。 抽象工厂模式的缺点:如果需要增加新的产品树,那么就要新增三个产品类,比如VolvoCar,VolvoSportCar,VolvoSportCar,并且要修改三个工厂类。这样大批量的改动是很丑陋的做法。 所以可以用简单工厂配合反射来改进抽象工厂: UML图略。 abstract class BenzCar{ private...
工厂方法模式分为三种:一:普通工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建 二:工厂方法模式,是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不...类。一个抽象工厂类,可以派生出多个具体工厂类。每个具体工厂类可以创建多个具体产品类的实例。区别:工厂方法模式...
工厂方法模式——交给子类去创建 工厂方法模式,有了进步,把工厂类进行改进,提升为一个抽象类(接口),把对具体产品的实现交给对应的具体的子类去做,解耦多个产品之间的业务逻辑。 前面都是针对一个产品族的设计,如果有多个产品族的话,就可以使用抽象工厂模式 ...
简单工厂模式(SimpleFactory Mode): 简单工厂模式的思路是,首先我们把一些共性的东西(算法)拿出来,进行抽象,比如加减乘除。然后我们在定义一个类作为工厂类,工厂类的作用就是根据传过来的字符串或者其他Key值给返回一个相对应的算法的实体。 优点: 方便扩展算法,比如增加一个开根号的功能,我们只要继续继承运算类就行...