美文网首页
工厂方法模式的简单分析

工厂方法模式的简单分析

作者: simit | 来源:发表于2018-11-14 17:10 被阅读0次

1.工厂模式的定义
2.工厂模式的使用场景
3.工厂模式的优势
4.工厂模式的实现
工厂方法模式一般来说是定义一个用于创建对象的接口,让子类决定实例化哪个类。使用工厂方法模式可以把对象的创建和使用分离开来。
工厂方法模式的使用场景:类的实例化过程比较复杂但是用new就可以完成创建的对象无需使用工厂模式。
工厂方法模式的优势:
1.使用工厂方法模式可以使对象的创建和使用分离更好的实现解耦;
2.可以降低代码的重复,一个复杂对象需要在多个地方使用,那么就会有很多重复代码,使用工厂方法模式统一管理,可以减少重复代码数量。
工厂方法模式主要分为四个模块:
1.抽象工厂:工厂方法模式的核心
2.具体工厂:实现具体的业务逻辑
3.抽象产品:工厂方法模式所创建的产品的父类
4.具体产品:实现抽象产品的某个具体产品的对象
工厂方法模式的实现
抽象工厂

/**
 * 定义一个抽象工厂类
 */
public abstract class Factory {

    /**
     *
     * @param clz 具体产品的类型
     * @param <T>
     * @return 具体产品对象
     */
    public abstract <T extends Car> T createCar(Class<T> clz);

}

定义具体工厂类,继承抽象工厂实现创建对象的逻辑


/**
 * 具体工厂
 */
public class CarFactory extends Factory{


    @Override
    public <T extends Car> T createCar(Class<T> clz) {

        Car car = null;
        try {
            car = (Car) Class.forName(clz.getName()).newInstance();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }


        return (T) car;
    }
}

定义抽象产品即具体产品的父类

/**
 * 具体产品的父类
 */
public abstract class Car {

    /**
     * 可以开
     */
    public abstract void drive();

    /**
     * 可以乘坐的人数
     */
    public abstract void peoples(int i);
}

具体产品(继承抽象产品)

/**
 * 具体车的种类
 */
public class SUVCar extends Car{

    @Override
    public void drive() {
        Log.i("Car","SUVCar可以开走了!!!");
    }

    @Override
    public void peoples(int i) {
        Log.i("Car","SUVCar可以乘坐"+i+"个人");

    }
}


public class TruckCar extends Car{
    @Override
    public void drive() {
        Log.i("Car","TruckCar可以开走了!!!");
    }

    @Override
    public void peoples(int i) {
        Log.i("Car","TruckCar可以乘坐"+i+"个人");
    }
}

使工厂运作起来

   private void productCar(){
        Factory factory = new CarFactory();

        TruckCar truckCar = factory.createCar(TruckCar.class);
        truckCar.drive();
        truckCar.peoples(6);

        SUVCar suvCar = factory.createCar(SUVCar.class);
        suvCar.drive();
        suvCar.peoples(7);
    }

相关文章

  • 设计模式第三篇-创建型模式【工厂模式】

    设计模式案例分析-github 一、前言 工厂模式分为工厂方法(又称简单工厂)模式、抽象工厂模式。为方便讲解,工厂...

  • 设计模式-3种工厂模式

    工厂模式包括:简单工厂模式,工厂方法模式,抽象工厂模式 简单工厂模式 工厂方法根据参数直接创建实例:工厂->产品 ...

  • 设计模式小结-工厂方法模式

    工厂方法模式模式小结: 工厂方法模式是简单工厂模式的延伸,它继承了简单工厂模式的优点,同时还弥补了简单工厂模式的不...

  • 设计模式 工厂模式

    工厂模式 工厂模式三大类1、简单工厂模式(静态工厂方法模式)2、工厂方法模式3、抽象工厂模式(Kit模式) 简单工...

  • 2016.06笔记

    iOS设计模式之工厂模式(简单工厂,工厂方法,抽象工厂) 简单工厂:简单工厂模式的工厂类一般是使用静态方法,通过接...

  • 《C#设计模式》- 工厂方法模式

    工厂方法模式是简单工厂模式的延伸,它继承了简单工厂模式的优点,同时还弥补了简单工厂模式的缺陷。 工厂方法模式的概述...

  • [Android]三种工厂模式总结。

    Android中,工厂模式分为三种:简单工厂模式、工厂方法模式、抽象工厂模式。 一.简单工厂模式。 定义:简单工厂...

  • 设计模式-工厂模式

    设计模式1 设计模式2 工厂模式 工厂模式可简单的分为三类:简单工厂,工厂方法,抽象工厂 简单工厂模式 定义 简单...

  • 建造模式

    包括:简单工厂、工厂方法、抽象工厂、单例模式、多例模式、建造模式、原始原型模式。 简单工厂:又名静态工厂方法模式,...

  • 设计模式-工厂模式

    一、工厂模式分类 简单工厂模式 工厂方法模式 抽象工厂模式 二、简单工厂模式 简单工厂就是讲需要new对象的那段代...

网友评论

      本文标题:工厂方法模式的简单分析

      本文链接:https://www.haomeiwen.com/subject/chqjfqtx.html