简单工厂模式 改进版
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();
}
}