设计模式——工厂模式

定义

定义一个用于创建对象的接口,让子类去决定实例化哪个类

使用场景

在任何需要生成复杂的对象的地方我们都可以使用工厂模式。复杂对象适合工厂模式,如果是直接new操作就可以创建的对象就无需使用了

UML图

简单工厂模式UML
工厂模式UML.jpg

图1表示的是简单工厂模式,我们没有创建抽象工厂类,因为有时候我们只需要一个工厂。但是如果有时候我们需要多个工厂来生成不同的产品就会使用到图2。

示例

抽象产品类:

public abstract class Product {
    /**
     * 产品类的抽象方法
     * 具体的产品类实现具体的方法
     */
    public abstract void method();
}

具体产品类A:

public class ConcreteProductA extends Product{
    /**
     * 实现产品类的抽象方法
     */
    @Override
    public void method() {
        System.out.println("这是具体的产品A");
    }
    //产品A的其他方法...
    public void ProductA(){
        
    }
}

具体产品类B:

public class ConcreteProductB extends Product{
    /**
     * 实现产品类的抽象方法
     */
    @Override
    public void method() {
        System.out.println("这是具体的产品B");
    }
    //产品B的其他方法...
    public void ProductB(){
        
    }
}

抽象工厂类:

public abstract class Factory {
    /**
     * 抽象工厂方法 
     * 具体实现由子类实现 
     * @return 具体的产品对象
     */
    public abstract Product createProduct();
}

具体工厂类A:

public class ConcreteFactoryA extends Factory{

    @Override
    public Product createProduct() {
        return new ConcreteProductA();
    }
}

具体工厂类B:

public class ConcreteFactoryB extends Factory {
    @Override
    public Product createProduct() {
        return new ConcreteProductB();
    }
}

客户类:

public class Client {
    public static void main(String[] args) {
        Factory factoryA=new ConcreteFactoryA();
        Product productA=factoryA.createProduct();
        productA.method();
        
        Factory factoryB=new ConcreteFactoryB();
        Product productB=factoryB.createProduct();
        productB.method();
    }
}

上面示例的几个角色都很简单,只有分为四大模块
一是抽象工厂,为工厂模式的核心;

二是具体工厂,实现了具体的工厂业务逻辑;

三是抽象产品,是工厂模式所创建的产品的父类;

四是具体产品,实现抽象产品的某个具体产品的对象;

在Client类中我们分别创建不同的具体工厂类,并且通过具体工厂类的对象生成了具体的产品对象。这种需要哪个产品就生产哪一个比较常见,我在书上还看到有利用反射的方式来更加简洁的生成具体的产品对象。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、工厂模式简介 意图定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进...
    怡红快绿阅读 3,736评论 0 0
  • 原文地址:LoveDev 工厂模式是最常用的设计模式之一,该模式定义一个用于创建对象的工厂类,调用者不用关心创建的...
    KevinLive阅读 2,854评论 0 0
  • 一、工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。 工厂模式在...
    逆风飞行1226阅读 3,671评论 0 0
  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 9,426评论 1 15
  • 1. 爱一个人,就是想要和他一起吃好多好吃的,所以食物里有了山川湖海,诗和远方。 回家的时候,老公手里拿着一个塑料...
    青岛遇见你阅读 12,614评论 8 23

友情链接更多精彩内容