23种设计模式之简单工厂设计模式

1、概念

1.简单工厂设计模式,顾名思义,划重点,就是简单。
2.工厂,什么是工厂呢,联系我们生活来说就是一个工厂就是生产东西的地方

2、实际应用

1.假如我们现在有一个场景,比如一个用户去买车,想买一个宝马或者路虎。那么根据面向对象我们可以这么写

新建一个对象代表宝马汽车

package com.app.factory;

/**
 * @ClassName: Bmw
 * @Description (宝马)
 * @Date:2019/9/24 9:50
 * @Author: lk
 * @see
 * @since JDK 1.8
 */
public class Bmw {

}

新建一个对象代表路虎汽车

package com.app.factory;

/**
 * @ClassName: LandRover
 * @Description (路虎汽车)
 * @Date:2019/9/24 9:50
 * @Author: lk
 * @see
 * @since JDK 1.8
 */
public class LandRover {

}

新建一个启动类,代表用户购买了路虎或者宝马,因此直接这么写

package com.app.factory;

/**
 * @ClassName: FactoryTest
 * @Description (这里用一句话描述这个类的作用)
 * @Date:2019/9/24 9:51
 * @Author: lk
 * @see
 * @since JDK 1.8
 */
public class FactoryMain{
    public static void main(String[] args) {
        /*
         * 买了个宝马车
         */
        Bmw bmw = new Bmw();
        /**
         * 买了个路虎车
         */
        LandRover landRover = new LandRover();
    }
}

2.根据我们实际情况,new 代表新创建,用户是不可能直接造车,用户需要的是买车,而宝马和路虎有一个公共点,那就都是车,因此我们可以这样写

package com.app.factory;

/**
 * @ClassName: FactoryCar
 * @Description (定义车接口 统一)
 * @Date:2019/9/24 9:59
 * @Author: lk
 * @see
 * @since JDK 1.8
 */
public interface Car {
    /*
     * 用户买车启动类
     */
    void run();
}

实体类变更为:

package com.app.factory;

/**
 * @ClassName: Bmw
 * @Description (宝马)
 * @Date:2019/9/24 9:50
 * @Author: lk
 * @see
 * @since JDK 1.8
 */
public class Bmw  implements Car{

    @Override
    public void run() {
        System.out.println("购买了宝马汽车");
    }
}

package com.app.factory;

/**
 * @ClassName: LandRover
 * @Description (路虎汽车)
 * @Date:2019/9/24 9:50
 * @Author: lk
 * @see
 * @since JDK 1.8
 */
public class LandRover implements Car {

    @Override
    public void run() {
        System.out.println("购买了路虎汽车");
    }
}

编写一个工厂,用户传入标记,来判断用户购买什么汽车

package com.app.factory;

/**
 * @ClassName: FactoryCar
 * @Description (车的工厂)
 * @Date:2019/9/24 15:00
 * @Author: lk
 * @see
 * @since JDK 1.8
 */
public class FactoryCar {
    /**
     * 根据标记判断用户是需要买哪个车
     * @Author: lk
     */
    public static Car getBuyCar(String sign){
        Car car=null;
        if("luhu".equals(sign)){
            car=new LandRover();
        }else if("baoma".equals(sign)){
            car=new Bmw();
        }else{
            throw new RuntimeException("没有这个牌子的汽车");
        }
        return car;
    }
}

在这里插入图片描述
简单工厂设计模式大家学会了吗?和小编一起努力吧
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值