工厂形式是一种目标创立型形式,它供给了一种创立目标的最佳实践。在工厂形式中,咱们在创立目标时不运用 new 关键字,而是经过调用工厂办法来创立目标。工厂办法是一种在子类中界说的办法,该办法担任实例化目标。工厂办法能够回来不同的目标类型,因而工厂形式能够创立一组相关或不相关的目标。这样就能够将目标的创立和运用解耦。
简略工厂形式是最基本的工厂形式,它经过一个工厂类来创立一切需求的目标。简略工厂形式将目标的创立逻辑封装在一个工厂类中,客户端经过调用工厂类的静态办法来创立目标。
工厂办法形式是对简略工厂形式的改善,它界说了一个用于创立目标的接口或笼统类,让子类决议实例化哪一个类。工厂办法形式将目标的创立进程延迟到子类中进行,以此来完成了开闭准则。
笼统工厂形式是对工厂办法形式的扩展,它供给了一个创立一系列相关或相互依赖目标的接口或笼统类,而无需指定它们详细的类。笼统工厂形式能够创立多个产品族,每个产品族由多个详细产品组成。
假定咱们有一个 Shape 接口和三个完成类 Circle、Rectangle 和 Square,咱们想要依据给定的形状类型来创立相应的目标。
然后,咱们界说一个 ShapeFactory 类,它有一个静态办法 createShape,依据给定的形状类型来回来相应的目标:
最终,咱们咱们能够在客户端运用 ShapeFactory 来创立不一样的形状目标:
假定咱们仍旧是有一个Shape接口和三个完成类Circle、Rectangle和Square,咱们想要依据给定的形状类型来创立相应的目标,可是咱们不想运用一个工厂类来创立一切类型的目标,而是让每个形状类自己界说一个工厂类来创立自己的目标。
然后,咱们界说一个笼统工厂类ShapeFactory,它有一个笼统办法createShape,回来一个Shape目标:
接着,咱们让每个形状类都界说一个工厂类,承继自ShapeFactory,并完成createShape办法,回来自己的目标:
假定咱们不只有一个Shape接口和三个完成类Circle、Rectangle和Square,还有一个Color接口和三个完成类Red、Green和Blue,咱们想要依据给定的类型来创立相应的形状或色彩目标。
总归工厂形式经过引进一个工厂类来担任实例化其他类,能轻松完成解耦、扩展性好和进步代码可读性。它是 Java 开发中最常用和最根底的规划形式之一。娴熟运用工厂形式能够大幅度进步咱们的代码质量和开发功率。