六、工厂方法模式

1.动机

在软件系统中,经常面临着某个对象的创建工作;由于需求的变化,这个对象经常面临着剧烈的变化,但是他却有着稳定的接口。如何应对这种变化,如何保证依赖该对象的对象不随着需求的变化而变化

2.实现

(1)车接口

我们要实现的类型

package com.example.demo.factory.method;

public interface Car {

    /**
     * 能跑
     */
    void run();


    /**
     * 能停
     */
    void stop();

}

(2)车工厂

生成车的抽象接口

package com.example.demo.factory.method;

public interface CarFactory {

    /**
     * 制造汽车
     * @return 汽车实例
     */
    Car createCar();

}
(3)别摸我车实例
package com.example.demo.factory.method.impl;

import com.example.demo.factory.method.Car;

public class BmwCar implements Car {

    // 实现

    @Override
    public void run() {
        System.out.println("BWM启动了");
    }

    @Override
    public void stop() {
        System.out.println("BMW停止了");
    }
}
(4)别摸我车工厂实现
package com.example.demo.factory.method.impl;

import com.example.demo.factory.method.Car;
import com.example.demo.factory.method.CarFactory;

public class BmwCarFactory implements CarFactory {
    @Override
    public Car createCar() {
        return new BmwCar();
    }
}
(5)客户端
package com.example.demo.factory.method;

import com.example.demo.factory.method.impl.BmwCarFactory;

public class Main {

    public static void main(String[] args) {
        // 这个往往可以用配置文件实现0依赖
        runCar(new BmwCarFactory());
    }

    /**
     * 这里可以理解为客户端
     * @param carFactory 汽车工厂
     */
    public static void runCar(CarFactory carFactory){
        Car car = carFactory.createCar();
        car.run();
    }

}

3.要点

  • 工厂方法模式主要用于隔离类对象的使用者和具体类型之间的耦合关系。面对一个经常变化的具体类型,紧耦合关系会导致软件的脆弱。
  • 工厂方法模式通过面向对象的手法,将所要创建的具体对象工作延迟到子类,从而实现一种扩展的策略,较好的解决了紧耦合关系
  • 工厂方法模式解决的是单个对象的需求变化,而抽象工厂解决的是一系列对象的需求变化,建造者模式解决的是复杂对象的部分需求变化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值