设计模式之简单工厂模式

1.定义:简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。顾名思义工厂就是生产东西的,有原料(参数),模子(对象)就能生产出很多个具有相同功能的对象啦。它不属于GOF的23种设计模式,但现实中却经常会用到

2.组成:

这个模式本身很简单而且使用在业务较简单的情况下。一般用于小项目或者具体产品很少扩展的情况(这样工厂类才不用经常更改)。
它由三种角色组成:
工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑,根据逻辑不同,产生具体的工厂产品。如例子中的Driver类。
抽象产品角色:它一般是具体产品继承的父类或者实现的接口。由接口或者抽象类来实现。如例中的Car接口。
具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现,如例子中的Benz、Bmw类。

3.UML

来用类图来清晰的表示下的它们之间的关系:


 

 

4.应用:

  1. //抽象产品  
  2. abstract class Car{  
  3.     private String name;  
  4.       
  5.     public abstract void drive();  
  6.       
  7.     public String getName() {  
  8.         return name;  
  9.     }  
  10.     public void setName(String name) {  
  11.         this.name = name;  
  12.     }  
  13. }  
  14. //具体产品  
  15. class Benz extends Car{  
  16.     public void drive(){  
  17.         System.out.println(this.getName()+"----go-----------------------");  
  18.     }  
  19. }  
  20.   
  21. class Bmw extends Car{  
  22.     public void drive(){  
  23.         System.out.println(this.getName()+"----go-----------------------");  
  24.     }  
  25. }  
  26.   
  27. //简单工厂  
  28. class Driver{  
  29.     public static Car createCar(String car){  
  30.         Car c = null;  
  31.         if("Benz".equalsIgnoreCase(car))  
  32.             c = new Benz();  
  33.         else if("Bmw".equalsIgnoreCase(car))  
  34.             c = new Bmw();  
  35.         return c;  
  36.     }  
  37. }  
  38.   
  39. //老板 --》客户端
  40. public class BossSimplyFactory {  
  41.   
  42.     public static void main(String[] args) throws IOException {  
  43.         //老板告诉司机我今天坐奔驰  
  44.         Car car = Driver.createCar("benz");  
  45.         car.setName("benz");  
  46.          //司机开着奔驰出发  
  47.         car.drive();  
  48.     }
    1. http://www.cnblogs.com/wangjq/archive/2012/07/02/2558255.html
posted @ 2015-11-05 16:11  土肥圆  阅读(142)  评论(0编辑  收藏  举报