Java核心设计模式浅析

155 阅读2分钟

设计模式是解决软件设计问题的经典方案,本文将结合代码案例解析五种最常用的Java设计模式,帮助开发者深入理解其应用场景和实现逻辑。

一、单例模式:全局唯一访问点

单例模式确保类只有一个实例,并提供全局访问入口。常见于数据库连接池、系统配置管理等场景56

实现案例

Java
复制
// 饿汉式(线程安全)
public class Singleton {
    private static final Singleton instance = new Singleton();
    private Singleton() {}
    public static Singleton getInstance() { return instance; }
}

二、工厂模式:对象创建解耦

通过接口隔离具体实现类,常用于日志系统、数据库驱动等需要灵活扩展的场景57

形状工厂案例

Java
复制
interface Shape { void draw(); }
class Circle implements Shape { public void draw() { System.out.println(" 圆形"); } }
 
class ShapeFactory {
    public Shape createShape(String type) {
        if("circle".equals(type)) return new Circle();
        // 扩展其他形状...
        return null;
    }
}

三、观察者模式:事件驱动模型

实现对象间一对多的依赖关系,典型案例包括GUI事件监听、消息推送系统等13

老大-小弟模型代码结构

Java
复制
// 被观察者接口 
interface Mandator {
    void addWorker(Worker w);
    void notifyWorkers();
}
 
// 观察者实现类
class WorkImpl1 implements Worker {
    public void doSomeThing() { System.out.println(" 端茶"); }
}

四、策略模式:算法动态切换

通过封装算法族实现运行时策略切换,适用于支付方式选择、数据格式转换等场景46

数据类型转换策略

Java
复制
interface ParseStrategy {
    Object parse(String value);
}
class IntegerStrategy implements ParseStrategy {
    public Object parse(String v) { return Integer.valueOf(v);  }
}
 
class Context {
    private ParseStrategy strategy;
    public void setStrategy(ParseStrategy s) { this.strategy  = s; }
    public Object executeParse(String v) { return strategy.parse(v);  }
}

五、装饰器模式:功能动态扩展

在不修改原有对象结构的情况下添加新功能,常用于IO流处理、游戏装备系统等35

咖啡加料案例

Java
复制
abstract class Coffee { abstract double cost(); }
class Americano extends Coffee { 
    public double cost() { return 18.0; } 
}
 
abstract class Decorator extends Coffee {
    protected Coffee coffee;
    public Decorator(Coffee c) { this.coffee  = c; }
}
class MilkDecorator extends Decorator {
    public double cost() { return coffee.cost()  + 5.0; }
}