净谦

导航

简单工厂模式 改进版

package create.simpleFactory2;

/**
 *  简单工厂模式 改进版,感觉用在模块分析中纵向划分模块时使用
 * @author zhangchy
 *
 */

//汽车的抽象类
abstract class Car{
 public abstract void drive();
}

//汽车引擎的抽象类
abstract class CarEngin{
 public abstract void createEngin();
}

class BMWCar extends Car{
 public  void drive(){
  System.out.println("drive BMW Car");
 }
}

class BenzCar extends Car{
 public  void drive(){
  System.out.println("drive Benz Car");
 }
}

class BMWEngin extends CarEngin{
 public void createEngin(){
  System.out.println("drive BMW Engin");
 }
}

class BenzEngin extends CarEngin{
 public void createEngin(){
  System.out.println("drive Benz Engin");
 }
}

//汽车工厂,既能造车,又能造引擎
abstract class CarFactory{
 public abstract Car getCar();
 public abstract CarEngin getEngin();
}


//BMW工厂
class BMWFactory extends CarFactory{
 public  Car getCar(){
  return new BMWCar();
 }
 public  CarEngin getEngin(){
  return new BMWEngin();
 }
}

//Benz工厂
class BenzFactory extends CarFactory{
 public  Car getCar(){
  return new BenzCar();
 }
 public  CarEngin getEngin(){
  return new BenzEngin();
 }
}

public class SimpleFactoty2 {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Car car;
  CarEngin engin;
  CarFactory factory ;
  factory = new BMWFactory();
  car = factory.getCar();
  engin = factory.getEngin();
  car.drive();
  engin.createEngin();
  
  factory = new BenzFactory();
  car = factory.getCar();
  engin = factory.getEngin();
  car.drive();
  engin.createEngin();
 }

}

posted on 2012-03-20 10:05  康安V  阅读(164)  评论(0)    收藏  举报