快速理解工厂类模式

来源:互联网 发布:java 时间戳 编辑:程序博客网 时间:2024/05/18 11:22

在读这篇文章前可以先回顾一下简单工厂类的弊病。如果要增加一种车的类型,就得去改原来的生成不同Car的代码。这违背开闭原则,对修改封闭,对扩展开放。

工厂类解决了这个问题。一个工厂类的父类,可以派生出多个具体子工厂类。每个子类都可以生产出通一种商品,例子里是Car,只是不同品牌。

  1. //工厂类  
  2. abstract class Factory{  
  3.     public abstract Car createCar();  
  4. }  
  5. //具体工厂(每个具体工厂负责一个具体产品)  
  6. class BenzFactory extends Factory{  
  7.     public Car createCar(){  
  8.         return new Benz();  
  9.     }  
  10. }  
  11. class BmwFactory extends Factory{  
  12.     public Car createCar(){  
  13.         return new Bmw();  
  14.     }  
  15. }  
  16.    
  1. public class Driver{
  2.     public static void drive(Factory factory){
  3.         factory.createCar().run();
  4.     }
  5. }
  1. //测试  
  2. public class Test{  
  3.       public static void main(String[] args){  
  4.        Driver driver = new Driver();
  5.        driver.driver(new BenzFactory());  
  6.        driver.driver(new BmwFactory());
  7.     }  
  8. }
     如果需要扩展一个新的车型Audi,只需要创建一个新的工厂类AudiFactory。不需要对原有类做任何修改。这就是低耦合,扩展方便。

  1. class AudiFactory extends Factory{  
  2.     public Car createCar(){  
  3.         return new Audi();  
  4.     }  
  5. }

  1. //新测试  
  2. public class Test{  
  3.       public static void main(String[] args){  
  4.        Driver driver = new Driver();
  5.        driver.driver(new BenzFactory());  
  6.        driver.driver(new BmwFactory());
  7.        driver.driver(new AudiFactory());
  8.     }  
  9. }

0 0
原创粉丝点击