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小时内删除。
发表评论