Java实现工厂方法模式,以及对工厂方法模式的见解

工厂方法模式和简单工厂一样是一个很简单易懂的模式,简单工厂是传入不同的参数来获取想要的对象,工厂方法模式就是,一类或者一个产品有一个专门的工厂。

工厂方法模式的角色:

1. 抽象的产品接口

2. 抽象的工厂接口

3. 具体产品

4. 生产具体产品的工厂

下面上代码,以生产汽车为例,我们要分别生产奔驰汽车和大众汽车:

汽车接口:

public interface Car {

    void run();
}

汽车工厂接口:

public interface CarFactory {

    Car createCar();
}

奔驰汽车和大众汽车实现类:

public class Benz implements Car {

    public void run() {
        System.out.println("我是奔驰车,我以很快的速度在运行");
    }
}
public class VW implements Car {
    public void run() {
        System.out.println("我是大众车,我以比较快的速度运行");
    }
}

奔驰汽车工厂和大众汽车工厂实现类:

public class BenZFactory implements CarFactory {

    public Car createCar() {
        return new Benz();
    }
}
public class VWFactory implements CarFactory {

    public Car createCar() {
        return new VW();
    }
}

测试代码:


public class FactoryMethodTest {
    public static void main(String[] args) {
        CarFactory carFactory;

        carFactory = new BenZFactory();
        Car benz = carFactory.createCar();
        benz.run();

        carFactory = new VWFactory();
        Car vw = carFactory.createCar();
        vw.run();
    }
}

测试结果:

我是奔驰车,我以很快的速度在运行
我是大众车,我以比较快的速度运行

工厂方法模式优点:

1. 体现单一职责原则,一种工厂只生产一种商品

2. 提现开闭原则,增加产品就要增加工厂,对修改关闭,对扩展开放

3. 迪米特原则,里氏替换,依赖倒置,都有体现,但是接口隔离还是没有充足的体现

缺点:

1. 虽然工厂方法模式是符合开闭原则的,但是同时也是它的缺点,因为如果有上千上万个产品,会类爆炸。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值