美文网首页
工厂方法模式

工厂方法模式

作者: 流年划破容颜_cc55 | 来源:发表于2019-02-19 14:46 被阅读1次

前言,再前面我们已经学习了单例设计模式,今天我们来学习工厂方法设计模式,这个理解起来还是比较简单的。

1. 为什么需要工厂方法模式

工厂方法模式意在分离产品与创建的两个层次,使得用户在一个工厂池中可以选择想使用的产品,而忽略其创建过程。进一步说,就像一个大型工厂,对消费者而言,只需知道都有什么工厂的产品生产出来,而不必关注产品是如何生产的,但对于工厂来说,需要知道产品的制造过程

2 流程结构图.

image.png
首先,我们定义一个工厂的接口,然后可以又多个实现的类,每一个实现类去调用实现了具体接口的实现类,来创建一个类,话不多说,直接看代码。
 1 package org.factory.factorymethod;
 2 
 3 public interface CarFactory { //我们的工厂类
 4     Car createCar();
 5 }
 6 
 7 package org.factory.factorymethod;
 8 
 9 public interface Car { //具体的实现类
10     void run();
11 }
12 
13 public class AudiFactory implements CarFactory {//不同的实现工厂类
14 
15     @Override
16     public Car createCar() {
17         // TODO Auto-generated method stub
18         return  new Audi();//这里创建我们的具体实现类
19     }
20 
21 }
22 
23 public class BydFactory implements CarFactory {
24 
25     @Override
26     public Car createCar() {
27         // TODO Auto-generated method stub
28         return  new Byd();
29     }
30 
31 }
32 
33 public class BenzFactory implements CarFactory {
34 
35     @Override
36     public Car createCar() {
37         // TODO Auto-generated method stub
38         return new Benz();
39     }
40 
41 }
42 
43 public class Audi implements Car {
44 
45     @Override
46     public void run() {
47         // TODO Auto-generated method stub
48         System.out.println("奥迪再跑!");
49     }
50 
51 }
52 
53 public class Benz implements Car {
54 
55     @Override
56     public void run() {
57         // TODO Auto-generated method stub
58         System.out.println("奔驰再跑!");
59     }
60 
61 }
62 
63 public class Byd implements Car {
64 
65     @Override
66     public void run() {
67         // TODO Auto-generated method stub
68         System.out.println("比亚迪再跑!");
69     }
70 
71 }
72 
73 package org.factory.factorymethod;
74 
75 public class Client {
76 
77     public static void main(String[] args) {
78         // 调用具体的实现类,然后再去调用不同的实现,得到不同的实现 
              //结果
79         Car c1 = new AudiFactory().createCar();
80         Car c2 = new BydFactory().createCar();
81         
82         c1.run();
83         c2.run();
84     }
85 
86 }

3.适用场景

*  当一个类不知道它所必须创建的对象的类的时候。
*  当一个类希望由他的子类来制定它所创建的对象的时候
*    当类创建对象的职责委托给多个帮助子类中的某一个,并且希望进行一些信息的局部初始化的时候。

4.实际应用

应用场景:
1.JDK中Calendar的getInstance方法
2.Spring中IOC容器创建管理bean对象
3.Hibernate中SessionFactory创建Session
4.JDBC中Connection对象的获取
5.XML解析时DocumentBuilderFactory创建解析工厂
6.反射中Class对象的newInstance()

相关文章

  • 设计模式-3种工厂模式

    工厂模式包括:简单工厂模式,工厂方法模式,抽象工厂模式 简单工厂模式 工厂方法根据参数直接创建实例:工厂->产品 ...

  • 设计模式-工厂模式

    工厂模式概念 实例化对象,用工厂方法代替new操作。工厂模式包括工厂方法模式和抽象工厂模式。抽象工厂模式是工厂模式...

  • 设计模式-工厂方法模式

    1、工厂方法模式(Factory Method) 工厂方法模式分为三种: 普通工厂模式 多个工厂模式 静态工厂模式...

  • 设计模式 工厂模式

    工厂模式 工厂模式三大类1、简单工厂模式(静态工厂方法模式)2、工厂方法模式3、抽象工厂模式(Kit模式) 简单工...

  • python设计模式 - 工厂模式之工厂方法

    python 环境 工厂方法模式简介 工厂方法模式Factory Method,又称多态性工厂模式。在工厂方法模式...

  • 第一章2.0工厂- 基础类准备

    2.1工厂-简单工厂模式2.2工厂-工厂方法模式2.3工厂-抽象工厂模式

  • 建造模式

    包括:简单工厂、工厂方法、抽象工厂、单例模式、多例模式、建造模式、原始原型模式。 简单工厂:又名静态工厂方法模式,...

  • PHP-浅谈单例模式和工厂模式

    PHP中常用的设计模式有单例模式、工厂模式(简单工厂模式、工厂方法模式和抽象工厂方法模式)、适配模式、策略模式。 ...

  • 设计模式学习--工厂方法模式

    模式定义 工厂方法模式又称工厂模式,也叫虚拟构造器模式或者多态工厂模式,它属于类创建型模式。在工厂方法模式中,工厂...

  • 五分钟精通设计模式(三)之工厂方法模式

    工厂方法模式分为三种: 普通工厂方法模式、多个工厂方法模式、静态工厂方法模式 废话不多说,下面直奔主题,实现步骤:...

网友评论

      本文标题:工厂方法模式

      本文链接:https://www.haomeiwen.com/subject/azaxyqtx.html