Java创建型设计模式速查指南 | 附代码实例

🎯 为什么需要这些模式?

🛠️ 痛点:直接new对象会导致代码僵硬、难维护
✨ 解决:用设计模式让代码更灵活易扩展好维护


1️⃣ 单例模式 | 只生成一个对象

🔹 场景:配置文件、数据库连接池、日志对象
🔹 关键点

  • 私有构造方法 🔒
  • 全局访问点 🌍
  • 线程安全 ✅
public class Singleton {
    private static Singleton instance;
    
    private Singleton() {}  // 禁止外部new 
    
    // 获取唯一实例(懒加载+线程安全) 
    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class)  {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

💡 小技巧:用枚举实现更简单且防反射攻击!


2️⃣ 工厂方法 | 生产同类型对象

🔹 场景:支付方式、日志处理器、数据库连接
🔹 核心思想
👉 定义接口 → 子类决定实例化谁

// 产品接口 
interface Animal {
    void sound();
}
 
// 具体产品 
class Cat implements Animal {
    @Override 
    public void sound() { System.out.println(" 喵~"); }
}
 
// 工厂接口 
interface AnimalFactory {
    Animal createAnimal();
}
 
// 使用 
AnimalFactory factory = new CatFactory();
Animal cat = factory.createAnimal(); 
cat.sound();   // 输出"喵~"

🚀 优点:新增动物类型时,只需加代码不改旧逻辑


3️⃣ 抽象工厂 | 生产产品家族

🔹 场景:跨平台UI组件(按钮+文本框)、电子设备套装
🔹 特点

  • 一个工厂生产多个相关产品
  • 适合品牌概念(如小米/苹果生态)
// 抽象工厂 
interface TechFactory {
    Phone createPhone();
    Charger createCharger();
}
 
// 小米工厂 
class XiaomiFactory implements TechFactory {
    @Override 
    public Phone createPhone() { return new XiaomiPhone(); }
    
    @Override 
    public Charger createCharger() { return new XiaomiCharger(); }
}

⚠️ 注意:新增产品类型(如耳机)需修改所有工厂


4️⃣ 建造者模式 | 分步组装复杂对象

🔹 场景:定制电脑、订单生成、游戏角色创建
🔹 优势

  • 避免构造器参数爆炸 💥
  • 清晰区分必选/可选参数
Computer pc = new Computer.Builder()
    .cpu("i7")      // ✔️ 链式调用 
    .ram("16GB")
    .ssd("512GB")
    .build();       // 一键生成!

🎯 经典应用StringBuilderAlertDialog(Android)


5️⃣ 原型模式 | 高效复制对象

🔹 场景:游戏道具克隆、性能敏感的对象创建
🔹 实现方式

  • 浅拷贝:复制基础字段,引用共享 🚨
  • 深拷贝:完全独立副本(需递归复制)
// 实现Cloneable接口 
class Student implements Cloneable {
    @Override 
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();   // 默认浅拷贝 
    }
}
 
// 使用 
Student stu2 = (Student)stu1.clone(); 

📊 快速选型表

模式特点适用场景
单例全局唯一配置管理
工厂方法子类决定实例多类型产品
抽象工厂生产产品家族跨品牌配件
建造者分步构建复杂对象定制化需求
原型克隆对象高性能拷贝

🎁 文末福利
📚 延伸阅读:《Head First设计模式》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PGFA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值