专业的JAVA编程教程与资源

网站首页 > java教程 正文

Java设计模式(java设计模式的六大原则)

temp10 2025-03-30 21:00:01 java教程 4 ℃ 0 评论

Java设计模式


Java设计模式(java设计模式的六大原则)

一、设计模式的定义与分类

设计模式是解决软件设计问题的经验总结,旨在提升代码的可维护性、复用性和扩展性。Java中的设计模式通常分为三大类:

1. 创建型模式(5种):

解决对象创建问题,避免直接使用new关键字。包括:

o 工厂方法模式

o 抽象工厂模式

o 单例模式

o 生成器模式(建造者模式)

o 原型模式

2. 结构型模式(7种):

关注对象/类的组合方式,形成更灵活的结构。包括:

o 适配器模式(如兼容不同接口的类协作)

o 桥接模式(分离抽象与实现,支持独立扩展)

o 装饰模式(动态添加功能,替代继承)

o 代理模式(控制对象访问)

o 享元模式(共享细粒度对象,节省资源)

o 组合模式(树形结构处理部分-整体关系)

o 外观模式(简化复杂子系统调用)

3. 行为型模式(11种):

管理对象间的交互与职责分配。例如:

o 观察者模式(事件通知机制)

o 策略模式(算法灵活替换)

o 模板方法模式(定义算法骨架)

o 责任链模式(请求传递链)

o 迭代器模式(统一遍历集合)

二、核心OOP设计原则

设计模式基于以下原则实现高内聚、低耦合的设计:

1. 单一职责原则:一个类仅承担一个职责。

2. 开闭原则:对扩展开放,对修改关闭(通过抽象和接口实现)。

3. 里氏替换原则:子类可透明替换父类。

4. 依赖倒置原则:高层模块不依赖底层实现细节,两者依赖抽象。

5. 接口隔离原则:避免庞大接口,按需拆分。

6. 迪米特法则:减少对象间的直接依赖。

7. 组合优于继承:优先通过组合扩展功能。


三、常见模式详解与示例

1. 单例模式

o 定义:确保类仅有一个实例,如数据库连接池。

o 实现(懒汉式,双重检查锁):

public class Singleton {

private static volatile Singleton instance;

private Singleton() {}

public static Singleton getInstance() {

if (instance == null) {

synchronized (Singleton.class) {

if (instance == null) {

instance = new Singleton();

}

}

}

return instance;

}

}

o 注意事项:需防范反射和序列化破坏单例。

2. 工厂模式

o 定义:将对象创建逻辑封装,解耦客户端与具体类。

o 示例:

interface Product { void create(); }

class ProductA implements Product { /* 实现 */ }

class Factory {

public static Product getProduct(String type) {

return switch (type) {

case "A" -> new ProductA();

// 扩展新产品时无需修改客户端代码

default -> throw new IllegalArgumentException();

};

}

}

3. 观察者模式

o 场景:实现事件驱动的通知机制,如GUI组件状态更新。

o 结构:

o Subject(主题)维护观察者列表,通过notifyObservers()推送消息。

o Observer接口定义update()方法,由具体观察者实现响应逻辑。

4. 适配器模式

o 作用:转换接口不兼容的类,如将遗留系统接口适配新需求。

o 实现方式:

o 对象适配器:通过组合持有被适配对象(推荐)。

o 类适配器:通过继承实现(需多语言支持,如Java需结合接口)。


四、应用场景与注意事项

o 选择模式的标准:

根据问题类型匹配模式类别(如对象创建问题→创建型模式),避免过度设计。

o 典型应用:

o 装饰模式用于Java I/O流(如BufferedReader包装FileReader)。

o 代理模式实现远程调用(如RMI)或延迟加载。

o 陷阱规避:

o 单例模式需考虑多线程安全;

o 工厂模式需平衡简单工厂与抽象工厂的复杂度;

o 观察者模式需避免循环依赖。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表