Java工厂方法模式

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

Java工厂方法模式

niuyongzhi   2022-09-29 我要评论

1.工厂方法是什么

众所周知,工厂是生产产品的,并且产品供消费者使用。消费者不必关心产品的生产过程,只需要关心用哪种产品就行。

在Java世界中,工厂方法模式和现实功能类似。工厂即一个工厂类,提供获得对象(产品)的方法(工厂方法)。其他类(消费者)需要用到某个对象时,只需调用工厂方法就行,不必new这个对象。

2.如何实现

1)创建产品的抽象类或接口---抽象产品

2)创建具体产品的类---具体产品

3)创建工厂的抽象类或接口---抽象构造类

4)创建具体工厂类---具体构造类

3.代码实现

     比如想要获得车的参数信息,轮胎信息等。

1)抽象产品

/**
 * 产品抽象类
 */
public abstract class Tyre {
    String name;
    public abstract void getName();
}

2)具体产品

/**
 * 具体产品
 */
public class MichelinTyre extends Tyre {
    MichelinTyre(){
        name = "米其林轮胎";
    }
    @Override
    public void getName() {
        System.out.println("car name :"+name);
    }
}

3)抽象构造类

/**
 * 抽象构造类
 */
public abstract class Car {
    /**
     * 对外提供产品的抽象方法
     * @return
     */
    public abstract Tyre getTyre();
}

4)具体构造类

/**
 * 具体构造类
 */
public class BydCar extends Car {
    /**
     * 对外提供获得对象的方法。
     * 当用户想要获得某个产品时,可以通过相应的工厂方法来获取,而不是直接通过new的方式。
     * 优点:避免用户通过new来获取对象,让用户代码和产品代码解耦。
     * @return
     */
    @Override
    public Tyre getTyre() {
        return new MichelinTyre();
    }
}

5)测试类

/**
 * 测试类
 */
public class Main {
    public static void main(String args []){
        Tyre tyre;
        Car car = new BydCar();
        tyre = car.getTyre();
        tyre.getName();
    }
}

4.工厂方法模式的优点

1)可以让用户代码和某个特定对象的子类的代码解耦

2)用户不必关心他所使用的对象是如何创建的,只需要知道该对象有哪些方法可供调用即可。

5.拓展

工厂模式在Java集合框架中的应用案例

        Collection<Integer> list = new LinkedList<Integer>();
        for(int i = 0;i<5;i++){
            list.add(i);
        }
        Iterator<Integer> iterator = list.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }

在Collection接口中定义了一个 iterator方法,返回Iterator接口的实例。

   Iterator接口----抽象产品

   Iterator的实现类---具体产品

   Collection接口---抽象构造

  LinkedList链表类--具体构造类

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们