工厂方法模式

思考问题:一个工厂生产汽车,在不知道具体工厂和具体汽车品牌时应该如何设计?
答案:工厂方法模式。定义一个工厂接口和汽车接口,然后在工厂接口中声明一个factory工厂方法,传入参数用于决定需要生产的汽车的类型。
这里写图片描述
声明汽车工厂接口:

package com.shusheng.factoryMethodModel;

/**抽象工厂*/
public interface CarFactoryI {

    //工厂方法,创建一个汽车对象,其输入参数类型自行设置
    public <T extends CarI> T factory(Class<T> c);
}

声明汽车接口:

package com.shusheng.factoryMethodModel;

public interface CarI {

}

定义汽车工厂实现类:

package com.shusheng.factoryMethodModel;
/**具体的googleCar工厂*/
public class GoogleCarFactory implements CarFactoryI {
//生产汽车
    @Override
    public <T extends CarI> T factory(Class<T> c) {
        CarI carI = null;
        try {
            //carI = (CarI) Class.forName(c.getName()).newInstance();//显示加载class文件,两种方式都可以
            carI = c.newInstance();//隐式加载class文件
        } catch (Exception e) {
            e.printStackTrace();
        }
        return (T) carI;
    }
}

定义具体汽车类:
奔驰类:

package com.shusheng.factoryMethodModel;

public class BMW implements CarI {

}

宝马类:

package com.shusheng.factoryMethodModel;

public class Benz implements CarI {

}

测试程序:

package com.shusheng.factoryMethodModel;

public class FactoryMethodTest {

    public static void main(String[] args) {
        CarFactoryI factoryI = new GoogleCarFactory();

        Benz benz = factoryI.factory(Benz.class);//生产奔驰
        System.out.println(benz);//奔驰
        BMW bmw = factoryI.factory(BMW.class);//生产宝马
        System.out.println(bmw);//宝马
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值