工厂模式惯用法

2022-05-12 09:39:13 浏览数 (1)

总结

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

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

惯用法

一般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)

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

0 人点赞