java 工厂模式的实例详解
工厂方法中的“工厂”和我们平常理解的一样:用于生产产品。
而客户是要和产品打交道,所以工厂方法模式的意义在于把客户和产品分开,达到解耦和更灵活的目的。
一般我们有一个产品的抽象类,然后有几个具体的产品,如下:
//抽象产品角色 public interface Product{ void product(); } //具体产品1 public class Pro1 implements Product{ @Override public void product() { System.out.println("产品1"); } } //具体产品2 public class Pro2 implements Product{ @Override public void product() { System.out.println("产品2"); } }
接着客户要购买产品,他不直接和产品接触,而是使用工厂,所以我们有一个工厂:
public class Factory { public static Product buy(type) { switch (type) { case 1: return new Pro1(); case 2: return new Pro2(); default: break; } return null; } }
客户通过Factory .buy(type);即可购买到自己想要的产品。
————— 这就是 简单工厂模式,又称为 静态工厂方法模式。
如果新增了一款产品,我们多写一个产品类Pro3就可以了,但在工厂上我们要添加新的代码才能生产,这显然不符合“开闭原则(对扩展开放;对修改封闭)”,所以我们把工厂抽象,添加具体的工厂类,由客户选择某一个工厂,如下:
//抽象工厂 public interface Factory { Product buy(); } //具体工厂1 public class Factory1 implements Factory { @Override public Product buy() { return new Pro1(); } } //具体工厂2 public class Factory2 implements Factory { @Override public Product buy() { return new Pro2(); } }
当新增了一款产品,我们多创建一个具体的工厂来生产就可以了。但是当产品种类非常多时,会出现大量的与之对应的工厂对象,这并不是我们所希望的。
——— 这就是 工厂方法模式
当产品出现多个抽象时,我们可能会有多个产品接口,这个场景就成了我们所说的
——- 抽象工厂模式
总结:
无论是简单工厂模式,工厂方法模式,还是抽象工厂模式,他们都属于工厂模式,在形式和特点上也是极为相似的,他们的最终目的都是为了解耦。在使用时,我们不必去在意这个模式到底工厂方法模式还是抽象工厂模式,因为他们之间的演变常常是令人琢磨不透的。经常你会发现,明明使用的工厂方法模式,当新需求来临,稍加修改,加入了一个新方法后,由于类中的产品构成了不同等级结构中的产品族,它就变成抽象工厂模式了;而对于抽象工厂模式,当减少一个方法使的提供的产品不再构成产品族之后,它就演变成了工厂方法模式。 所以,在使用工厂模式时,只需要关心降低耦合度的目的是否达到了。
以上就是java 工厂模式的实例详解,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
本文向大家介绍Python设计模式之简单工厂模式实例详解,包括了Python设计模式之简单工厂模式实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python设计模式之简单工厂模式。分享给大家供大家参考,具体如下: 简单工厂模式(Simple Factory Pattern):是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 下面使用简单工厂模式实现一
本文向大家介绍PHP中单例模式与工厂模式详解,包括了PHP中单例模式与工厂模式详解的使用技巧和注意事项,需要的朋友参考一下 单例模式概念 单例模式是指整个应用中类只有一个对象实例的设计模式。 单例模式的特点 一个类在整个应用中只有一个实例 类必须自行创建这个实例 必须自行向整个系统提供这个实例 php中使用单例模式的原因 我用php大部分操作都是和各种数据库打交道,包括mysql,redis,me
本文向大家介绍PHP设计模式(一)工厂模式Factory实例详解【创建型】,包括了PHP设计模式(一)工厂模式Factory实例详解【创建型】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP设计模式(一)工厂模式Factory。分享给大家供大家参考,具体如下: 在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下,
本文向大家介绍java 单例模式的实例详解,包括了java 单例模式的实例详解的使用技巧和注意事项,需要的朋友参考一下 java 单例模式的实例详解 概念: java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种。 单例模式有一下特点: 1、单例类只能有一个实例。 2、单例类必须自己自己创建自己的唯一实例。 3、单例类必须给所有其他对
本文向大家介绍Java设计模式之工厂方法模式实例简析,包括了Java设计模式之工厂方法模式实例简析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java设计模式之工厂方法模式。分享给大家供大家参考,具体如下: 工厂方法模式使用的频率非常高,在我们日常的开发中总能遇见到它的身影。其定义为:Define an interface for creating an object, but let
本文向大家介绍Java使用设计模式中的工厂方法模式实例解析,包括了Java使用设计模式中的工厂方法模式实例解析的使用技巧和注意事项,需要的朋友参考一下 工厂方法模式的定义 工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的