设计模式三:工厂设计模式

核心作用:

    实现了创建者和调用者的分离 

    --简单工厂  

    --工厂方法模式

    --抽象工厂模式

简单工厂

interface Car {
    void run();
}

public class AudiCar implements Car {
    @Override
    public void run() {
        Log.d("Car","audicar");
    }
}
public class BMWCar implements Car {
    @Override
    public void run() {
        Log.d("Car", "bmw car");
    }
}

public class CarFactory {
    public Car getCar(int type) {
        switch (type) {
            case 0:
                return new AudiCar();
            case 1:
                return new BMWCar();
        }
        return null;

    }
}

我们获取car只需要通过CarFactory来获取 但是 如果我们有新的car添加需要修改CarFactory  事实上不是很能我们满足对扩展开放 对修改关闭的原则  但是工作中比较常用 


工厂方法模式--简单工厂的升级


interface Car {
    void run();
}

public class AudiCar implements Car {
    @Override
    public void run() {
        Log.d("Car","audicar");
    }
}
public class BMWCar implements Car {
    @Override
    public void run() {
        Log.d("Car", "bmw car");
    }
}
public class AudiFactory {
    public Car getCar() {
        return new AudiCar();
    }
}
public class BMWFactory {
    public Car getCar() {
        return new BMWCar();
    }
}

我们只需要使用每个工厂类 获取对象即可 这样有新的Car添加 只需要添加对应Factory  但是这样会产生大量类 

抽象工厂模式(比较复杂 不常用)

针对有多个接口子类的情况--产品族

就是针对不同情况构建不同的产品

interface IEngine {
    /**
     * 发动机性能
     */
    void property();
}

interface IOtherConfig {
    void congig();
}

interface ICardFactory {
    /**
     * 配置
     */
    IOtherConfig config();

    /**
     * 发动机配置
     *
     * @return
     */
    IEngine createEngin();
}

public class SlapUpCarFactory implements ICardFactory{
    @Override
    public IOtherConfig config() {
        return new IOtherConfig() {
            @Override
            public void congig() {
                Log.d("SlapUpCarFactory","高配内饰");
            }
        };
    }


    @Override
    public IEngine createEngin() {
        return new IEngine() {
            @Override
            public void property() {
                Log.d("SlapUpCarFactory","高档发动机");
            }
        };
    }
}

简单写下  基本上 这种模式用到的时候 项目就比较大了  但是那时 就不只单单一种设计模式了


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值