抽象工厂模式

实例化对象:实现了创建者和调用者的分离。

多个接口,构成了产品族的时候使用抽象工厂模式

用来生产不同产品族的全部产品,对于生成新的产品,无能为力。

比如质量好,中,坏的发动机,座椅,轮胎组成好,中,坏的车

 

质量好和差一点的发动机类和接口

package com.bjsxt.factory.abstractFactory;  

public interface Engine {

void run();

void start();

}

  

class LuxuryEngine implements Engine{  

@Override

public void run() {

System.out.println("转的快!");

} 

@Override

public void start() {

System.out.println("启动快!可以自动启停!");

}

}

  

class LowEngine implements Engine{

@Override

public void run() {

System.out.println("转的慢!");

}

@Override

public void start() {

System.out.println("启动慢!");

}

}

 

质量好和差一点的座椅类和接口

package com.bjsxt.factory.abstractFactory;

public interface Seat {

void massage();

} 

class LuxurySeat implements Seat {

@Override

public void massage() {

System.out.println("可以自动按摩!");

}

}

class LowSeat implements Seat {

@Override

public void massage() {

System.out.println("不能按摩!");

}

}

  

package com.bjsxt.factory.abstractFactory;

public interface Tyre {

void revolve();

}

class LuxuryTyre implements Tyre {

@Override

public void revolve() {

System.out.println("旋转不磨损!");

}

}

  

class LowTyre implements Tyre {

@Override

public void revolve() {

System.out.println("旋转磨损快!");

}

}

汽车工厂接口:

package com.bjsxt.factory.abstractFactory;

  

public interface CarFactory {

Engine createEngine();

Seat createSeat();

Tyre createTyre();

}

  

package com.bjsxt.factory.abstractFactory;

public class LuxuryCarFactory implements CarFactory {

@Override

public Engine createEngine() {

return new LuxuryEngine();

}

  

@Override

public Seat createSeat() {

return new LuxurySeat();

}

  

@Override

public Tyre createTyre() {

return new LuxuryTyre();

}

}

  

package com.bjsxt.factory.abstractFactory;

public class LowCarFactory implements CarFactory {

@Override

public Engine createEngine() {

return new LowEngine();

}

  

@Override

public Seat createSeat() {

return new LowSeat();

}

  

@Override

public Tyre createTyre() {

return new LowTyre();

}

}

 

测试代码:

package com.bjsxt.factory.abstractFactory;

public class Client {

public static void main(String[] args) {

CarFactory  factory = new LuxuryCarFactory();

Engine e = factory.createEngine();

e.run();

e.start();  

}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值