设计模式3-抽象工厂模式

抽象工厂简单地说是工厂的工厂,抽象工厂可以创建具体工厂,由具体工厂来产生具体产品。 

代码实现

汽车椅子类 

public interface Chair {

	void run();
	
}

class ChairA implements Chair {

	@Override
	public void run() {
		System.out.println("ChairA");
	}
}

class ChairB implements Chair {

	@Override
	public void run() {
		System.out.println("ChairB");
	}
}

汽车发动机类

public interface Engine {

	void run();
	
}

class EngineA implements Engine {

	@Override
	public void run() {
		System.out.println("EngineA");
	}
}

class EngineB implements Engine {

	@Override
	public void run() {
		System.out.println("EngineB");
	}
}

汽车工厂类

public interface CarFactory {

	Engine createEngine();
	
	Chair createChair();
	
	void run();
	
}

汽车A工厂类

public class CarAFactory implements CarFactory {

	@Override
	public Engine createEngine() {
		return new EngineA();
	}

	@Override
	public Chair createChair() {
		return new ChairA();
	}
	
	@Override
	public void run() {
		createEngine().run();
		createChair().run();
	}

}

汽车B工厂类

public class CarBFactory implements CarFactory {

	@Override
	public Engine createEngine() {
		return new EngineB();
	}

	@Override
	public Chair createChair() {
		return new ChairB();
	}

	@Override
	public void run() {
		createEngine().run();
		createChair().run();
	}

}

测试类

public class Test {

	public static void main(String[] args) {
		CarFactory carAFactory = new CarAFactory();
		carAFactory.run();
		
		CarFactory carBFactory = new CarBFactory();
		carBFactory.run();
	}
	
}

结果

EngineA
ChairA
EngineB
ChairB

简单工厂、工厂方法、抽象工厂之小结、区别

简单工厂 : 用来生产同一等级结构中的任意产品。(不支持拓展增加产品)

工厂方法 :用来生产同一等级结构中的固定产品。(支持拓展增加产品)  

抽象工厂 :用来生产不同产品族的全部产品。(不支持拓展增加产品;支持增加产品族)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值