java设计模式之二抽象工厂模式(Abstract Factory)

工厂方法模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。因为抽象工厂不太好理解,我们先看看图,然后就和代码,就比较容易理解。

 1 package com.qcf.test2;

 2 /**

 3  * 抽象工厂模式

 4  * 为方法创建一个接口

 5  * 为工厂类创建一个接口

 6  * 如果再增加一辆车那就再创建一个方法类继承Car,创建一个factory继承Factory

 7  * @author Computer

 8  *

 9  */

10 public class AbstractFactory {

11     public static void main(String[] args) {

12         Car car=new BigCarFactory().product();

13         car.getName();

14     }

15 }

16 /**

17  * 工厂类接口

18  * @author Computer

19  *

20  */

21 interface Factory{

22     Car product();

23 }

24 /**

25  * Bmw工厂生产类

26  * @author Computer

27  *

28  */

29  class BmwCarFactory implements Factory{

30 

31     @Override

32     public Car product() {

33         return new Bmw();

34     }

35  }

36 

37  /**

38   * Big工厂生产类

39   * @author Computer

40   *

41   */

42   class BigCarFactory implements Factory{

43 

44      @Override

45      public Car product() {

46          return new BigCar();

47      }

48 }

49 

50 /**

51  * 接口

52  * @author Computer

53  *

54  */

55 interface Car{

56     void getName();    

57 }

58 /**

59  * 实现接口的子类

60  * @author Computer

61  *

62  */

63 class Bmw implements Car{

64     @Override

65     public void getName() {

66         System.out.println("BMW  Car....");

67     }

68 }

69 /**

70  * 实现接口的子类

71  * @author Computer

72  *

73  */ 

74 class BigCar implements Car{

75     @Override

76     public void getName() {

77         System.out.println("Big Car...");

78     }

79 }
View Code

 

你可能感兴趣的:(java设计模式)