java业务中常用的设计模式示例
Java作为目前最为流行的编程语言之一,广泛应用于各行各业的软件开发中。在Java业务开发中,设计模式是一种常用的解决问题的思路和方法论。设计模式可以提供一套灵活而可复用的解决方案,帮助开发人员更好地组织和管理代码,提高代码的可维护性和可扩展性。本文将介绍几种常见的设计模式,并给出相应的示例。
1. 单例模式(Singleton Pattern)
单例模式是一种常见的创建型设计模式,它保证一个类只有一个实例,并提供一个全局访问点。单例模式常用于需要共享资源的场景,如数据库连接、线程池等。在Java中,可以通过私有化构造函数、静态变量和静态方法实现单例模式。以下是一个简单的单例模式示例:
```java
public class Singleton {
    private static Singleton instance;
    private Singleton() {}
    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}
```
2. 工厂模式(Factory Pattern)
工厂模式是一种常见的创建型设计模式,它通过工厂类创建对象,而不直接使用new关键字。工厂模式将对象的创建和使用分离,使得代码更加灵活和可扩展。在Java中,常见的工厂模式包括简单工厂模式、工厂方法模式和抽象工厂模式。以下是一个简单工厂模式的示例:
```java
public interface Shape {
    void draw();
}
public class Rectangle implements Shape {
    @Override
    public void draw() {
        System.out.println("绘制矩形");
    }
}
public class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("绘制圆形");
    }
}
public class ShapeFactory {
    public Shape getShape(String shapeType) {
        if (shapeType.equalsIgnoreCase("rectangle")) {
            return new Rectangle();
        } else if (shapeType.equalsIgnoreCase("circle")) {
            return new Circle();
        }
        return null;
    }
}
public class Main {
    public static void main(String[] args) {
        ShapeFactory shapeFactory = new ShapeFactory();
        Shape rectangle = Shape("rectangle");
        rectangle.draw();
       
        Shape circle = Shape("circle");
        circle.draw();
    }
}
```
3. 观察者模式(Observer Pattern)
观察者模式是一种常见的行为型设计模式,它定义了对象之间的一对多关系,当一个对象状态发生改变时,其所有依赖对象都会收到通知并自动更新。观察者模式常用于事件处理、消息通知等场景。在Java中,可以使用内置的观察者模式来实现,也可以自定义观察者接口和观察者列表。以下是一个内置观察者模式的示例:
```java
import java.util.Observable;
import java.util.Observer;
public class WeatherData extends Observable {
    private float temperature;
    public void setTemperature(float temperature) {
        perature = temperature;
        setChanged();
        notifyObservers(temperature);
    }
}
public class Display implements Observer {
    @Override单例模式的几种实现方式
    public void update(Observable o, Object arg) {
        if (o instanceof WeatherData) {
            float temperature = (float) arg;
            System.out.println("当前温度:" + temperature);
        }
    }
}
public class Main {
    public static void main(String[] args) {
        WeatherData weatherData = new WeatherData();
        Display display = new Display();
        weatherData.addObserver(display);
       
        weatherData.setTemperature(25.5f);
    }
}
```

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。