网站首页 > 精选教程 正文
Java 常见设计模式及应用场景
在Java的世界里,设计模式就像武林秘籍一样,掌握了它们,你就能在软件开发的江湖中游刃有余。今天,我们就来聊聊那些常见的设计模式以及它们在现实生活中的应用场景。
单例模式:一个人的世界
单例模式可以说是设计模式中的“独行侠”。它的核心思想就是一个类只能有一个实例,并且提供一个全局访问点。这就好比我们公司里的董事长,只有一个,而且每个人都得找他汇报工作。
代码示例:
public class Singleton {
private static Singleton instance;
// 私有构造函数防止外部实例化
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
在这个例子中,getInstance()方法确保了整个程序中只有一个Singleton对象存在。这种模式在需要控制资源访问的时候特别有用,比如数据库连接池或者日志记录器。
工厂模式:生产线上的工人
工厂模式就像是一个生产线上的工人,负责制造不同的产品。它定义了一个创建对象的接口,但由子类决定实例化哪一个类。工厂模式把类的实例化推迟到了子类。
代码示例:
// 抽象产品
interface Shape {
void draw();
}
// 具体产品
class Rectangle implements Shape {
public void draw() {
System.out.println("Drawing Rectangle");
}
}
class Circle implements Shape {
public void draw() {
System.out.println("Drawing Circle");
}
}
// 工厂类
class ShapeFactory {
public Shape getShape(String shapeType){
if(shapeType == null){
return null;
}
if(shapeType.equalsIgnoreCase("CIRCLE")){
return new Circle();
} else if(shapeType.equalsIgnoreCase("RECTANGLE")){
return new Rectangle();
}
return null;
}
}
在这个例子中,ShapeFactory根据传入的参数决定创建哪种形状的对象。这种模式非常适合用于创建一系列相关的对象,而不必关心具体的实现细节。
观察者模式:粉丝与明星
观察者模式描述了一种一对多的关系,当一个对象的状态发生变化时,所有依赖于它的对象都会得到通知并自动更新。这就好比粉丝关注明星,只要明星发新歌,所有的粉丝都会收到推送。
代码示例:
// 抽象观察者
interface Observer {
void update(String message);
}
// 抽象主题
interface Subject {
void registerObserver(Observer o);
void removeObserver(Observer o);
void notifyObservers(String message);
}
// 具体主题
class Star implements Subject {
private List<Observer> observers = new ArrayList<>();
@Override
public void registerObserver(Observer o) {
observers.add(o);
}
@Override
public void removeObserver(Observer o) {
observers.remove(o);
}
@Override
public void notifyObservers(String message) {
for (Observer observer : observers) {
observer.update(message);
}
}
}
// 具体观察者
class Fan implements Observer {
private String name;
public Fan(String name) {
this.name = name;
}
@Override
public void update(String message) {
System.out.println(name + " received message: " + message);
}
}
在这里,Star类扮演着发布消息的角色,而Fan则是接收消息的一方。当明星发布新歌时,所有注册的粉丝都会立即收到通知。这种模式非常适合用于事件驱动的应用程序。
总结
设计模式不仅仅是代码技巧的集合,更是解决问题的智慧结晶。无论是单例模式的独孤求败,还是工厂模式的流水线作业,亦或是观察者模式的粉丝效应,每一种模式都有其独特的魅力和适用场景。掌握了这些模式,你就能够在Java开发的路上走得更远,更稳。记住,选择合适的设计模式,就像选对了武功秘籍,会让你的编程之路更加顺畅!
- 上一篇: Java 中常见的设计模式及其精彩应用
- 下一篇: Java设计原则与重构:优雅代码的艺术
猜你喜欢
- 2025-06-09 java设计模式之责任链模式(java责任链模式的应用场景)
- 2025-06-09 Java设计模式在真实项目中的生动体现
- 2025-06-09 Java设计模式:工厂模式与抽象工厂模式深度解读
- 2025-06-09 设计模式:Java开发者的"武功秘籍",让你的代码从青铜到王者!
- 2025-06-09 Java设计模式:软件设计的艺术画布
- 2025-06-09 Java设计模式在实际开发中的奇妙应用
- 2025-06-09 Java设计模式在Spring框架中的精彩演绎
- 2025-06-09 Java开发中常见的设计误区(java设计原则详解)
- 2025-06-09 Java高可用架构设计:构建稳定可靠的系统
- 2025-06-09 Java设计原则与重构:优雅代码的艺术
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)