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;
}
}
简单工厂设计模式大家学会了吗?和小编一起努力吧