抽象工厂模式

抽象工厂模式(Abstract factory pattern)
作用

用来生产不同产品族的全部产品,可以看做是工厂方法模式的升级版

用途

在有多个业务品种、业务分类时,使用抽象工厂模式较为合适

弊端

对于增加新的产品,无能为力,支持增加产品族

案例(汽车引擎,座椅,轮胎产品族)
创建汽车引擎接口(并定义高低端引擎实例)
public interface Engine {
	// 引擎发动速度
	public abstract void run();

	// 引擎启动速度
	public abstract void start();
}

//高端引擎
class LuxuryEngine implements Engine{

	public void run() {
		System.out.println("引擎转速很快!");
	}

	public void start() {
		System.out.println("引擎启动速度很快!");
	}
}

//低端引擎
class LowEngine implements Engine{

	public void run() {
		System.out.println("引擎转速很慢!");
	}

	public void start() {
		System.out.println("引擎启动速度很慢!");
	}
}

创建汽车座椅接口(并定义高低端座椅实例)

public interface Seat {
	//定义按摩功能
	public abstract void massage();
}

//高端座椅
class LuxurySeat implements Seat{

	public void massage() {
		System.out.println("高端座椅可以按摩!");
	}	
}

//低端座椅
class LowSeat implements Seat{

	public void massage() {
		System.out.println("高端座椅不可以按摩!");
	}	
}

创建轮胎接口(并定义高低端轮胎实例)

public interface Tyre {
	//定义轮胎寿命方法
	public abstract void age();
}

//定义高端轮胎
class LuxuryTyre implements Tyre{

	public void age() {
		System.out.println("轮胎寿命很长!");
	}
	
}

//定义低端轮胎
class LowTyre implements Tyre{

	public void age() {
		System.out.println("轮胎寿命很短!");
	}
	
}

定义一个抽象工厂接口(封装一个产品族

public interface CarFactory {
	// 创建引擎对象
	public abstract Engine createEngine();

	// 创建座椅对象
	public abstract Seat createSeat();

	// 创建轮胎对象
	public abstract Tyre createTyre();
}

定义高端产品族工厂

public class LuxuryCarFactory implements CarFactory{

	public Engine createEngine() {
		return new LuxuryEngine();
	}

	public Seat createSeat() {
		return new LuxurySeat();
	}

	public Tyre createTyre() {
		return new LuxuryTyre();
	}

}

定义低端产品族工厂

public class LowCarFactory implements CarFactory{

	public Engine createEngine() {
		return new LowEngine();
	}

	public Seat createSeat() {
		return new LowSeat();
	}

	public Tyre createTyre() {
		return new LowTyre();
	}

}

抽象工厂方式(用户可以建立一条产品族,用户只需要清楚:一个汽车工厂产品族接口一个高低端工厂产品族接口

public class CarUser {

	public static void main(String[] args) {
		Engine e = new LuxuryCarFactory().createEngine();
		e.run();
		e.start();
	}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值