【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
工厂方法设计模式:
一个抽象的产品类,派生出多个不同的产品,一个抽象工厂类,派生出多个不同的抽象工厂,每个工厂对应一个抽象的产品类。
缺点:在我们想要增加一个新的产品的时候,我们需要新增 一个对应的工厂。
举个例子:例如一个运算类,有加法类继承它,减法类继承它,同时实现它的抽象方法(计算方法), 这时候我们就需要有加法工厂,减法工厂来与运算类一一对应。 客户端如果需要减法功能,就从减法工厂中获取一个减法类的实例,然后调用其方法即可。
public abstract class operation { //产品抽象基类 public int number1; public int number2; public abstract Object operation(); }
public class add extends operation { //加法类 @Override public Object operation() { return number1+number2; } }
public abstract class factory { //基本工厂,返回产品基类 public abstract operation getOpFactory(); }
public class AddFactory extends factory{ //加法工厂,对应返回加法基类。 @Override public operation getOpFactory() { return new add(); } }
抽象工厂模式:
多个产品的基类,派生出多个产品,一个抽象工厂,派生出多个工厂,每个工厂对应每一个基类。
举个列子:在上面例子的基础上,我们将继承运算基类的类拆分出来,变成加法类,减法类,这样每个类就能够实现自己对应的逻辑,比如加法类你可以写上两个抽象方法(普通加法,超级加法), 然后我们继承基类工厂(方法有创建加法工厂,创建减法工厂),实现对应的加法工厂(实现),减法工厂,每个工厂对应一个相应的基类。
来源:oschina
链接:https://my.oschina.net/u/4189935/blog/3146513