设计模式之抽象工厂模式

来源:互联网 发布:mysql inner join 编辑:程序博客网 时间:2024/06/07 08:51
/** * 多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。 * <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 {@Overridepublic void drive() {System.out.println("drive BussinessBenz");}}/** * 具体产品 */class SportsBenz implements Benz {@Overridepublic void drive() {System.out.println("drive SportsBenz");}}/** * 具体产品 */class BussinessBmw implements Bmw {@Overridepublic void drive() {System.out.println("drive BussinessBmw");}}/** * 具体产品 */class SportsBmw implements Bmw {@Overridepublic void drive() {System.out.println("drive SportsBmw");}}/** * 抽象工厂方法 */interface Driver {public Car getBussinessCar();public Car getSportsCar();}/** * 具体工厂方法 */class BenzDriver implements Driver {@Overridepublic Car getBussinessCar() {return new BussinessBenz();}@Overridepublic Car getSportsCar() {return new SportsBenz();}}/** * 具体工厂方法 */class BmwDriver implements Driver {@Overridepublic Car getBussinessCar() {return new BussinessBmw();}@Overridepublic Car getSportsCar() {return new SportsBmw();}}}

0 0
原创粉丝点击