跳转至
用户认证 - eMac Tech Docs

用户认证

重要提醒

为了您的权益以及学习体验,请不要外借账号!

如果您没有账号或忘记密码,请联系管理员重置密码。

请输入您的登录信息

创建型模式

作用

classDiagram
    class Product {
        <>
    }
    class ConcreteProductA
    class ConcreteProductB
    class Factory

    Product <|-- ConcreteProductA
    Product <|-- ConcreteProductB
    Factory --> Product : creates

    note for Factory "工厂模式结构"

本质

封装对象创建过程,使系统不依赖具体对象实例化

模式分类

模式 用途 示例场景
工厂方法 创建单一产品 数据库连接工厂
抽象工厂 创建产品族 GUI组件库
单例 全局唯一实例 配置管理器
建造者 分步构建复杂对象 SQL查询构建
原型 克隆现有对象 游戏角色复制

示例

// 单例模式(双重检查锁)
public class Singleton {
    private volatile static Singleton instance;

    private Singleton() {}

    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

// 工厂方法模式
interface Logger {
    void log(String message);
}

class FileLogger implements Logger {
    public void log(String message) {
        System.out.println("文件日志: " + message);
    }
}

class LoggerFactory {
    public static Logger getLogger(String type) {
        if ("file".equals(type)) {
            return new FileLogger();
        }
        throw new IllegalArgumentException("未知日志类型");
    }
}

注意事项

  • 单例模式要考虑线程安全和序列化问题
  • 工厂方法适合产品种类较少的情况
  • 抽象工厂适合产品族扩展
  • 建造者模式适合参数复杂的对象创建
  • 原型模式要注意深拷贝/浅拷贝问题