/**
* 多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。
* <p/>
* 一个抽象工厂类,可以派生出多个具体工厂类。
* <p/>
* 每个具体工厂类可以创建多个具体产品类的实例。
* <p/>
*/
public class AbstractFactory {
public AbstractFactory() {
Driver driver = new BenzDriver();
Car car = driver.getSportsCar();
car.drive();
}
/**
* 产品接口
*/
interface Car {
public void drive();
}
/**
* 产品接口
*/
interface Benz extends Car {
}
/**
* 产品接口
*/
interface Bmw extends Car {
}
/**
* 具体产品
*/
class BussinessBenz implements Benz {
@Override
public void drive() {
System.out.println("drive BussinessBenz");
}
}
/**
* 具体产品
*/
class SportsBenz implements Benz {
@Override
public void drive() {
System.out.println("drive SportsBenz");
}
}
/**
* 具体产品
*/
class BussinessBmw implements Bmw {
@Override
public void drive() {
System.out.println("drive BussinessBmw");
}
}
/**
* 具体产品
*/
class SportsBmw implements Bmw {
@Override
public void drive() {
System.out.println("drive SportsBmw");
}
}
/**
* 抽象工厂方法
*/
interface Driver {
public Car getBussinessCar();
public Car getSportsCar();
}
/**
* 具体工厂方法
*/
class BenzDriver implements Driver {
@Override
public Car getBussinessCar() {
return new BussinessBenz();
}
@Override
public Car getSportsCar() {
return new SportsBenz();
}
}
/**
* 具体工厂方法
*/
class BmwDriver implements Driver {
@Override
public Car getBussinessCar() {
return new BussinessBmw();
}
@Override
public Car getSportsCar() {
return new SportsBmw();
}
}
}
设计模式之抽象工厂模式
最新推荐文章于 2024-08-29 17:15:49 发布