工厂模式_简单工厂模式

一、工厂模式作用
  实现了创建者和调用者的分离。将选择实现类、创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。

二、工厂模式的核心本质
  实例化对象,用工厂方法代替new操作。

三、工厂模式的详细分类

  3.1 简单工厂模式

    简单工厂模式也叫静态工厂模式,就是工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。对于增加新产品(新功能)必须要修改源程序!
    简单工厂模式的两种实现方式:

    3.1.1 第一种方式

    车类型接口:  

package edu.aeon.model.factory.easyfactory;
/**
 * [说明]:车类型接口
 * @author aeon(qq:1584875179)
 */
public interface Car {
    void run();
}

    宝马类:

package edu.aeon.model.factory.easyfactory;
/**
 * [说明]:宝马类
 * @author aeon(qq:1584875179)
 *
 */
public class BMW implements Car {

    @Override
    public void run() {
        System.out.println("宝马在跑!");
    }

}

    比亚迪类:  

package edu.aeon.model.factory.easyfactory;
/**
 * [说明]:比亚迪类
 * @author aeon(qq:1584875179)
 *
 */
public class Byd implements Car {

    @Override
    public void run() {
        System.out.println("比亚迪在跑!");
    }

}

    生产车的工厂类:  

package edu.aeon.model.factory.easyfactory;
/**
 * [说明]:生产车的工厂类
 * @author aeon(qq:1584875179)
 *
 */
public class CarFactory {
    public static Car creatCar(String type){
        if("bmw".equals(type)){
            return new BMW();
        }else if("byd".equals(type)){
            return new Byd();
        }else{
            return null;
        }
    }
}

    测试在没有工厂模式下的调用过程:  

package edu.aeon.model.factory.easyfactory;
/**
 * [说明]:测试在没有工厂模式下的调用过程
 * @author aeon(qq:1584875179)
 *
 */
public class TestNoFactory {

    public static void main(String[] args) {
        Car car1=new BMW();
        Car car2=new Byd();
        car1.run();
        car2.run();
    }
}

    测试结果截图如下:

    

    测试简单工厂模式下的调用类:  

package edu.aeon.model.factory.easyfactory;
/**
 * [说明]:测试简单工厂模式
 * @author aeon(qq:1584875179)
 *
 */
public class TestEasyFactory {

    public static void main(String[] args) {
        Car car1=CarFactory.creatCar("bmw");
        Car car2=CarFactory.creatCar("byd");
        car1.run();
        car2.run();
    }

}

    测试结果如下:

    

    3.1.2 第二种方式(工厂类写法)      

package edu.aeon.model.factory.easyfactory;
/**
 * [说明]:简单工厂模式的第二种写法
 * @author aeon(qq:1584875179)
 *
 */
public class CarFactory2 {
    public static Car createBMW(){
        return new BMW();
    }
    public static Car createByd(){
        return new Byd();
    }
}

    测试类:    

package edu.aeon.model.factory.easyfactory;
/**
 * [说明]:测试简单工厂模式第二种写法
 * @author aeon(qq:1584875179)
 *
 */
public class TestEasyFactory2 {

    public static void main(String[] args) {
        Car car1=CarFactory2.createBMW();
        Car car2=CarFactory2.createByd();
        car1.run();
        car2.run();
    }

}

    测试结果截图如下:

    

  3.2 工厂方法模式

  3.3抽象工厂模式

猜你喜欢

转载自www.cnblogs.com/aeon/p/10301657.html
今日推荐