java中23种设计模式详解

warning: 这篇文章距离上次修改已过180天,其中的内容可能已经有所变动。

设计模式是软件开发中的重要概念,对于Java开发者来说,学习并理解23种设计模式是很有帮助的。下面我将为你提供每种设计模式的简短描述和示例代码。

  1. 抽象工厂(Abstract Factory)

提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。




public interface AnimalFactory {
    Animal createAnimal();
}
 
public class DogFactory implements AnimalFactory {
    public Animal createAnimal() {
        return new Dog();
    }
}
  1. 建造者模式(Builder)

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。




public class Car {
    private String engine;
    private String wheel;
    // ...
}
 
public class CarBuilder {
    public Car buildCar(String engine, String wheel) {
        Car car = new Car();
        car.setEngine(engine);
        car.setWheel(wheel);
        return car;
    }
}
  1. 工厂方法(Factory Method)

定义一个用于创建对象的接口,让子类决定实例化哪个类。




public interface VehicleFactory {
    Vehicle createVehicle();
}
 
public class CarFactory implements VehicleFactory {
    public Vehicle createVehicle() {
        return new Car();
    }
}
  1. 原型(Prototype)

用原型实例指定创建对象的种类,并且通过复制这个原型来创建新的对象。




public class Car implements Cloneable {
    // ...
    public Car clone() {
        try {
            return (Car) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new AssertionError();
        }
    }
}
  1. 单例(Singleton)

确保一个类只有一个实例,并提供一个全局访问点来访问这个唯一的实例。




public class DatabaseConnection {
    private static DatabaseConnection instance = null;
    private DatabaseConnection() {}
    public static synchronized DatabaseConnection getInstance() {
        if (instance == null) {
            instance = new DatabaseConnection();
        }
        return instance;
    }
}
  1. 适配器(Adapter)

将一个类的接口转换成客户希望的另一个接口。




public class AnimalAdapter implements Dog {
    private Animal animal;
    public AnimalAdapter(Animal animal) {
        this.animal = animal;
    }
    public void bark() {
        animal.makeNoise();
    }
}
  1. 桥接(Bridge)

将抽象部分与它的实现部分分离,使它们都可以独立地变化。




public interface Engine {
    void start();
}
 
public class V8Engine implements Engine {
    public void start() {
        System.out.println("V8 Engine starting.");
    }
}
  1. 组合(Composite)

将对象组合成树形结构以表示部分整体的关系,Composite使得用户对单个对象和组合对

最后修改于:2024年08月26日 13:11

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日