工厂模式
工厂模式(Factory Pattern)是最常用的设计模式之一。这种类型的设计模式属于创建模式,他提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
介绍
意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建福偶成延迟到子类进行。
主要解决:主要解决接口选择的问题。
何时使用:我们明确的计划不同调价下创建不同实例时。
如何解决:让其子类实现工厂接口,返回的也是一个抽象的产品。
关键代码:创建过程在其子类执行。
应用实例:
- 您需要一辆汽车,可以直接从工厂里面提货,而不用去管这两汽车是怎么做出来的,以及这个汽车里面的具体实现。
- Hibernate换数据库值需要换方言和驱动就可以。
优点:
- 调用者想创建一个对象,只要知道其名称就可以了。
- 扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以,
- 屏蔽产品的具体实现,使用者值关心产品的接口。
缺点:
每次增加一个产品时,都需要增加衣蛾具体类和对象实现工厂,似的系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同事也增加了系统具体类的依赖。这并不是什么好事。
简单的工程模式巧妙的使用java的继承和多态的特性,将根据不同条件使不同子类创建对象成为可能
实例:
使用工厂模式的业务特点:可以划分为同一系列的产品,产品中可能有同样的方法(没有亦可)。
- 创建工厂抽象类:CoreMessage,如果产品有共同的方法,可以在此类中书写方法,这个类主要的作用是让产品来继承,这样就能减少代码的重复量。
- 创建工厂类:CoreMessageFactory,里面只有一个根据传入参数不同来返回CoreMessage的方法,这里注意,CoreMessage类已经是产品的父类,这个方法表面返回的是CoreMessage父类,其实实质上是其各个不同的子类,这时候,如果想要使用各个子产品中特有的方法,只能子类重写父类中的方法,所以就在子类中重写父类的方法,这样就能达到使用子类中的特有方法的目的
- 创建产品类,继承工厂抽象类CoreMessage,重写父类中的需要重写的方法,这也就是上面提到的,工厂模式很巧妙的运用了继承和多态的特性