天天看点

GOF23设计模式之工厂方法模式的实现

package com.bjsxt.cn.factorymethod;      
public class Audi implements Car {      
 @Override
 public void run() {
  System.out.println("奥迪在跑");
  
 }
 
}      
package com.bjsxt.cn.factorymethod;      
public class AudiFactory implements CarFactory {      
 @Override
 public Car createCar() {
  
  return new Audi();
 }
 
}
      
package com.bjsxt.cn.factorymethod;      
public class Byd implements Car {      
 @Override
 public void run() {
  System.out.println("比亚迪在跑");
  
 }
 
}
      
package com.bjsxt.cn.factorymethod;      
public class BydFactory implements CarFactory {      
 @Override
 public Car createCar() {
  
  return new Byd();
 }
 
}
      
package com.bjsxt.cn.factorymethod;      
public interface Car {
 public void run();
}
      
package com.bjsxt.cn.factorymethod;      
public interface CarFactory {
 public  Car createCar();
}
      
/**
 * 时间:2015年3月29日10:16:30
 * 源程序的作用:测试工厂方法模式
 * 这种工厂方法模式中的特点如下:
 *  在该模式组织中,具有很多的工厂类。(当然他们可以有一个工厂的接口,通过这个接口组织每个工厂类的功能)
 *  我们要在这中组织中增加新的类,比如说benchi,我们的做法如下,先在包中增加类型Benchi,然后相应的增加相应类型的
 *  工厂,(BenchiFactory 一般来讲也要实现相应的工厂接口)。因此,这种组织结构使得我们不必修改已有类型,而只需要扩展(
 *  增加一对类来完成增添相应的类型)换句话讲,这是符合OCP原则的。(也就是开闭原则。)
 * 
 */
package com.bjsxt.cn.factorymethod;      
public class Client {
 public static void main(String[] args) {
  Car c1 = new AudiFactory().createCar();
  c1.run();
  
  new BydFactory().createCar().run();
 }
}

      

继续阅读