工厂模式

来源:互联网 发布:程序员一天工作几小时 编辑:程序博客网 时间:2024/06/05 19:34

工厂模式:
工厂模式是对简单工厂模式的进一步抽象。工厂模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

工厂模式组成:
1、抽象工厂类:具体工厂类需要实现的接口或抽象类。

2、具体工厂类:实现或继承自抽象工厂类,用于生产具体的产品类。

3、抽闲产品类:具体产品需要实现的接口或抽象类。

4、具体产品类:被具体工厂类创建对象,客户端实际操作对象。

具体工厂实现抽象工厂,具体产品实现抽象产品;具体工厂创建具体产品对象。

以生产车辆工厂为例:

##抽象产品类interface ICar {    public void BuyCar();}#具体产品类public class Bwm implements ICar{    @Override    public void BuyCar(){        System.out.println("买宝马车.");    }}public class buick implements ICar {    @Override    public void BuyCar(){        System.out.println("买别克车.");    }}##抽象工厂类public interface IFactory {    public ICar CreateCar();}#具体工厂类public class bmwFactory implements IFactory{    @Override    public ICar CreateCar(){        return new Bwm();    }}public class buickFactory implements IFactory{    @Override    public ICar CreateCar(){        return new buick();    }}#客户端public class Main {    public static void main(String[] args) {        // TODO Auto-generated method stub        IFactory factory = new bmwFactory();        ICar bwm = factory.CreateCar();        bwm.BuyCar();        factory = new buickFactory();        ICar buick = factory.CreateCar();        buick.BuyCar();    }}

uml图:
这里写图片描述

分析:
工厂模式对简单工厂模式进一步对了抽象,简单工厂的工厂类中生产产品,改为了在工厂模式的工厂接口的子类中生产产品。工厂模式完全符合“开放-封闭原则”。同时,工厂模式把简单工厂的内部逻辑判断移到了客户端进行,若想在工厂模式增加功能,本在是改工厂类的,现在在工厂模式改客户端了。

原创粉丝点击