设计模式(二):工厂模式

1. 工厂模式的介绍

工厂模式(Factory Pattern)属于创建型模式,它提供了一种创建对象的最佳方式。它在创建对象时提供了一种封装机制,将实际创建对象的代码与使用代码分离。

工厂模式中包含三种角色:

  • 抽象产品(Abstract Product):定义了产品的共同接口或抽象类,规定了产品对象的共同方法。
  • 具体产品(Concrete Product):实现了抽象产品接口,定义了具体产品的特定行为和属性。
  • 工厂( Factory):负责实际创建具体产品的对象。

2. 工厂模式的类图

在这里插入图片描述

3. 工厂模式的实现

3.1 第一步:创建一个抽象产品

package blog;

/**
 * 服饰
 */
public interface Cloth {
    void dress();
}

3.2 第二步:创建具体产品

package blog;

/**
 * 男装
 */
public class ManCloth implements Cloth {
    @Override
    public void dress() {
        System.out.println("男装");
    }
}
package blog;

/**
 * 女装
 */
public class WomanCloth implements Cloth {
    @Override
    public void dress() {
        System.out.println("女装");
    }
}

3.3 第三步:创建工厂

package blog;

/**
 * 工厂
 */
public class ClothFactory {
    public static Cloth create(String type) {
        try {
            Class<?> aClass = Class.forName(type);
            return (Cloth) aClass.getDeclaredConstructor().newInstance();
        } catch (Exception e) {
            return null;
        }
    }

}

3.4 第四步:使用工厂,传递类型信息获取对象

package blog;

/**
 * 使用工厂
 */
public class ClothFactoryDemo {
    public static void main(String[] args) {
        // 创建男装
        Cloth manCloth = ClothFactory.create("blog.ManCloth");
        manCloth.dress();
        // 创建女装
        Cloth womanCloth = ClothFactory.create("blog.WomanCloth");
        womanCloth.dress();
    }
}

相关推荐

  1. 设计模式工厂模式

    2024-04-23 12:44:01       69 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-23 12:44:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-23 12:44:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-23 12:44:01       87 阅读
  4. Python语言-面向对象

    2024-04-23 12:44:01       96 阅读

热门阅读

  1. git 常用命令

    2024-04-23 12:44:01       58 阅读
  2. Elasticsearch与IK分词器:深度解析与实战应用

    2024-04-23 12:44:01       52 阅读
  3. python借助elasticsearch实现标签匹配计数

    2024-04-23 12:44:01       36 阅读
  4. 五道基础且高频的Python算法面试题

    2024-04-23 12:44:01       36 阅读
  5. .NET/C#汇总 —— 数据库概念知识

    2024-04-23 12:44:01       37 阅读
  6. Docker容器使用

    2024-04-23 12:44:01       26 阅读
  7. C语言数组相关练习题

    2024-04-23 12:44:01       39 阅读