前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >工厂模式惯用法

工厂模式惯用法

作者头像
mingjie
发布2022-05-12 09:39:13
1480
发布2022-05-12 09:39:13
举报
文章被收录于专栏:Postgresql源码分析

总结

简单工厂模式是我见的最多的使用方式,类工厂模式在使用中灵活性低一些,抽象工厂模式比较繁琐,使用时思路不是很顺畅,可能会增加系统复杂度。

简单工厂模式可以理解为:生产不同对象的统一入口。把创建对象的复杂性做了一层封装,降低调用者的使用难度(避免创建与初始化对象的代码变更),将难度封装到类与实例话中间,还是体现的封装思想。

惯用法

一般builder作为主类的静态子类使用:

代码语言:javascript
复制
public class ArgParse {
    private List<Object> objects = Lists.newArrayList();
    public final void addObject(Object object) {
        if (object instanceof Iterable) {
            for (Object o : (Iterable<?>) object) {
                objects.add(o);
            }
        } else if (object.getClass().isArray()) {
            for (Object o : (Object[]) object) {
                objects.add(o);
            }
        } else {
            objects.add(object);
        }
    }
    
    public static Builder newBuilder() {
        return new Builder();
    }
    public static class Builder {
        private ArgParse argParse = new ArgParse();
        private String[] args = null;

        public Builder() {
        }

        public Builder addObject(Object o) {
            argParse.addObject(o);
            return this;
        }

        public ArgParse build() {
            return argParse;
        }

    }
}

使用时根据不同参数,按不同规则初始化类,注意这里的初始化就很灵活了,不一定在主类的构造函数初始化,也可以调用主类的一些函数做定制化初始化。

代码语言:javascript
复制
@Test
public void testCase1() {
  MainTest args = new MainTest();
  String[] argv = { "-log", "2", "-groups", "unit" };
  ArgParse argParse = ArgParse.newBuilder().addObject(args).build();
  argParse.parse(argv);
}

设计原则

温习下设计原则

1、开闭原则(Open Close Principle)

开闭原则的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。

2、里氏代换原则(Liskov Substitution Principle)

里氏代换原则是面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。LSP 是继承复用的基石,只有当派生类可以替换掉基类,且软件单位的功能不受到影响时,基类才能真正被复用,而派生类也能够在基类的基础上增加新的行为。里氏代换原则是对开闭原则的补充。实现开闭原则的关键步骤就是抽象化,而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。

3、依赖倒转原则(Dependence Inversion Principle)

这个原则是开闭原则的基础,具体内容:针对接口编程,依赖于抽象而不依赖于具体。

4、接口隔离原则(Interface Segregation Principle)

这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。它还有另外一个意思是:降低类之间的耦合度。由此可见,其实设计模式就是从大型软件架构出发、便于升级和维护的软件设计思想,它强调降低依赖,降低耦合。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-03-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 总结
  • 惯用法
  • 设计原则
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档