本文将介绍三种常见的Java设计模式,并为每种设计模式提供简单的小程序示例。本文旨在帮助开发者理解这些设计模式的基本概念和应用场景,为日常编码提供指导。

打开网易新闻 查看精彩图片

单例模式

单例模式是一种创建型设计模式,确保一个类只有一个实例,并https://www.yucege.com/water/6.html提供全局访问点。在Java中,单例模式通常通过私有构造函数和静态方法来实现。以下是一个简单的单例模式的Java实现:

```javapublic class Singleton {private static Singleton instance;private Singleton() {}public static Singleton getInstance() {if (instance == null) {instance = new Singleton();}return instance;}}```

在这个例子中,Singleton类不能被https://www.yucege.com/water/12.html外部实例化,getInstance方法确保只有一个Singleton实例被创建。此模式常用于需要全局控制的情况,如数据库连接池。

观察者模式

观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,使https://www.yucege.com/water/7.html得当一个对象的状态发生变化时,所有依赖于它的对象都会被通知并自动更新。以下是一个简单的观察者模式示例:

```javaimport java.util.ArrayList;import java.util.List;interface Observer {void update(String message);}class Subject {private List

observers = new ArrayList<>();public void attach(Observer observer) {observers.add(observer);}public void notifyObservers(String message) {for (Observer observer : observers) {observer.update(message);}}}class ConcreteObserver implements Observer {private String name;public ConcreteObserver(String name) {this.name = name;}public void update(String message) {System.out.println(name + \" https://www.yucege.com/water/11.html: \" + message);}}public class Demo {public static void main(String[] args) {Subject subject = new Subject();ConcreteObserver observer1 = new ConcreteObserver(\"观察者1\");ConcreteObserver observer2 = new ConcreteObserver(\"观察者2\");subject.attach(observer1);subject.attach(observer2);subject.notifyObservers(\"事件发生了\");}}```

在这个例子中,Subject类维护了一个观察者列表,当通知事件发生时,它https://www.yucege.com/water/8.html会遍历这个列表并调用每个观察者的update方法。此模式适用于事件驱动的系统,如用户界面或消息传递系统。

策略模式

策略模式是一种行为型设计模式,它定义了一系列的算法,并将每一个算法封装起来,让https://www.yucege.com/water/9.html它们可以相互替换。策略模式允许算法独立于使用它的客户而变化。以下是一个简单的策略模式示例:

```javainterface Strategy {int doOperation(int num1, int num2);}class Addition implements Strategy {public int doOperation(int num1, int num2) {return num1 + num2;}}class Subtraction implements Strategy {public int doOperation(int num1, int num2) {return num1 - num2;}}class Context {private Strategy strategy;public Context(Strategy strategy) {this.strategy = strategy;}public int executeStrategy(int num1, int num2) {return strategy.doOperation(num1, num2);}}public class Demo {public static void main(String[] args) {Context context = new Context(new Addition());System.out.println(\"10 + 5 = \" + context.executeStrategy(10, 5));context = new Context(new Subtraction());System.out.println(\"10 - 5 = \" + context.executeStrategy(10, 5));}}```

在这个例子中,Context类使用Strategy接口来https://www.yucege.com/water/10.html调用不同的算法(Addition和Subtraction)。这种模式适合于需要根据不同条件选择不同算法的场景,如https://www.yucege.com/water/13.html支付方式选择。

单例模式、观察者模式和策略模式各自提供了不同的解决方案,帮助开发者优化代码的结构和可维护性。理解这些设计模式将有助于在实际应用中作出更高效的设计决策。