码农小汪-设计模式-工厂方法模式 每一产品都有一个具体的实现工厂

来源:互联网 发布:梅甘娜rs 知乎 编辑:程序博客网 时间:2024/05/29 19:01

之前的简单工厂模式,我们不是觉得没有满足开闭原则?

这个就是我们工厂方法的意义!

抽象工厂角色: 工厂角色必须实现的接口或者必须继承的父类。这个每人具体的产品对应一个工厂的实现类。
具体工厂角色:它含有和具体业务逻辑有关的代码,对应一个产品
抽象产品角色:它是具体产品继承的父类或者是实现的接口。
具体产品角色:具体工厂角色所创建的对象就是此角色的实例
这个和我们之前的图像没得区别吧

看图!其实都是差不多的
这里写图片描述

我们的汽车。抽象的汽车,和具体的实现类!

抽象产品  abstract class Car{      private String name;      public abstract void drive();      public String getName() {          return name;      }      public void setName(String name) {          this.name = name;      }  }  //具体产品  class Benz extends Car{      public void drive(){          System.out.println(this.getName()+"----go-----------------------");      }  }  class Bmw extends Car{      public void drive(){          System.out.println(this.getName()+"----go-----------------------");      }  }  

工厂类,一个汽车对应一个实现的工厂

//抽象工厂  abstract class Driver{      public abstract Car createCar(String car) throws Exception;  }  //具体工厂(每个具体工厂负责一个具体产品)  class BenzDriver extends Driver{      public Car createCar(String car) throws Exception {          return new Benz();      }  }  class BmwDriver extends Driver{      public Car createCar(String car) throws Exception {          return new Bmw();      }  }  
        Driver d = new BenzDriver();   工厂实现类,产生汽车哦,下面        Car c = d.createCar("benz");           c.setName("benz");          c.drive();  

每当我们创建一个具体的产品的时候,都有对应与之实现的工厂类。这样的话我们就满足的开闭原则,可扩展性比较的好。慢慢的学习哦,我也会慢慢的理解这些东西。多看几次就好了。以前不懂,看过几变我相信就会慢慢的理解这些东西啦。

我们和之前的工厂模式一样的,也是对于客服端隐藏了具体的实现类。你懂得哦~

0 0
原创粉丝点击