Java设计模式----工厂模式(三)

在工厂模式(二)中提到的问题:怎样实现多产品系?

  • 抽象工厂模式的实现
  • 工厂模式与抽象工厂模式的区别

抽象工厂模式的实现

实现步骤

1、定制抽象产品接口,如ICar,IBus
2、定制其具体子类,如小汽车类TopCar、MidCar、LowCar,公共汽车类TopBus、MidBus、LowBus
3、定制抽象工厂类(或接口),如AbstractFactory,其中有两个重要的create()抽象方法,一个返回ICar,一个返回IBus
4、定制具体工厂子类,如TopFacyory、MidFactory、LowFactory,每个工厂重写create()抽象方法

//定义小汽车接口:ICar.java
public interface ICar{
    //由于工厂模式仅关系对象的创建,为说明方便,无需定义方法
}

//下面定义高、中、低档具体的小汽车
//高档汽车:TopCar.java
public class TopCar implements ICar {

}

//中档汽车:MidCar.java
public class MidCar implements ICar {

}

//低档汽车:LowCar.java
public class LowCar implements ICar {

}

//定义公共汽车接口:IBus.java
public interface IBus{
    //由于工厂模式仅关系对象的创建,为说明方便,无需定义方法
}

//下面定义高、中、低档具体的公共汽车
//高档公共汽车:TopBus.java
public class TopBus implements IBus {

}

//中档公共汽车:MidBus.java
public class MidBus implements IBus {

}

//低档公共汽车:LowBus.java
public class LowBus implements IBus {

}
//定义抽象工厂AbstractFactory.java
public abstract class AbstractFactory{
    public abstract ICar create();
    public abstract IBus create();
}

//定义高档工厂
public class TopFactory extends AbstractFactory{
    public ICar create (){
        return new TopCar();
        }
    public IBus create (){
        return new TopBus();
        }
}

//定义中档工厂
public class MidFactory extends AbstractFactory{
    public ICar create (){
        return new MidCar();
        }
    public IBus create (){
        return new MidBus();
        }
}

//定义低档工厂
public class LowFactory extends AbstractFactory{
    public ICar create (){
        return new LowCar();
        }
    public IBus create (){
        return new LowBus();
        }
}

//测试程序:CarTest.java
public class CarTest {
    public static void main(String[] args) {
        AbstractFactory obj = new TopFactory();//多态创建高档工厂
        ICar car = obj.create();              //获得高档工厂中的小汽车对象
        IBus bus = obj.create();              //获得高档工厂中的公共汽车对象
    }
}

工厂模式与抽象工厂模式的区别

从本质上来说,抽象工厂与工厂模式是统一的,只不过抽象工厂是多产品系的,工厂模式是单产品系的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值