02、抽象工厂模式

来源:互联网 发布:php小型博客开源框架 编辑:程序博客网 时间:2024/06/04 18:44

抽象工厂模式

细节就不说了,简单的通过模拟场景来挖掘其优点。

产品类
IRequest 接口,包含网络请求相关的方法,比如 addHeader(),toUrl()等方法。
工厂类
IRequestFactory接口,包含创建IRequest 的方法,createRequest();

模拟两种框架(OkHttp 和 XUtil)
包含以下实现类
OkRequestFactory(工厂)
OkRequest(产品)
XUtilRequestFactory(工厂)
XUtilRequest(产品)
类图如下:

类图

再看看调用

        IRequestFactory manager;        //根据类型自动选择框架        switch (httpType) {            case 1:                manager = new OkRequestFactory();                break;            default:                manager = new XUtilRequestFactory();                break;        }        IRequest request = manager.createRequest();        request.toUrl();
  • 总结(仔细观察代码):
  • 首先 工厂跟产品是一对多的关系;
  • 其次 调用过程无需关注产品具体类,逻辑分装在工厂类中;
  • 再次 可以进行比较好的业务切换(工厂选择的切换)
  • 最后 是缺点,每增加一种类别的产品,意味着需要增加一种对应的工厂;
1 0
原创粉丝点击