【注】本文还有待修改,现在只提供源码 和 简单分析,后续会做详细说明
1.为什么要使用抽象工厂,一个案例告诉你,对照下面这张图,来看案例
问题:
1.UI展示有时候,需要调用业务A,有时候要调用业务B 2.而业务A,可能使用了MSSQL数据库,也有可能使用了Oracle数据库 3.不管MSSQL数据层,还是Oracle数据层,他们用到的实体都是一样,且数据库需要的方法也类似 |
分析并解决
1.首先,我们肯定需要一个数据层,那么这个数据层由谁来创建,由谁来调用 【数据层由数据工厂创建 并 赋值给数据层接口,然后由具体的业务层调用】 2.而不同数据库,会对应不同的工厂,那我们要使用哪个工厂 【通过数据工厂父类,再根据配置文件,可以得到我们需要的数据层对象】 3.然后,我们就需要一个业务层,那么这个业务层由谁来创建,由谁来调用 【业务层由业务工厂创建 并 赋值 给业务层接口,然后由表示层调用】 4.而不同业务,会对应不同的工厂,那我们要使用哪个工厂 【通过业务工厂父类,再根据配置文件,可以得到我们需要的业务层对象】 5.有了业务层,那么怎么调用呢 【在表示层,通过业务工厂父类,创建业务工厂对象】 【再由业务工厂对象,创建业务层对象】 【最后由业务层对象,调用我们需要的方法 】 6.得出结论 【各层都只调用接口,具体实现由工厂来实现】 |
2.按照以上 分析,我们就开始写代码,大家可以按照上面分析,以及对照代码,理解一下,不懂的话,欢迎交流
3.源码地址
源码下载