淘先锋技术网

首页 1 2 3 4 5 6 7

Java语言是一种广泛应用于企业级应用的编程语言,它具有丰富的类库和强大的面向对象特性。而在 Java 世界中,设计模式则是一种经典的编程思想,通过应用设计模式可以将程序中重复的代码剥离出来,使代码更易于维护和扩展,并增强程序的可复用性和可读性。

下面我们来看看 Java 中常见的设计模式及其运用场景:

单例模式

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

单例模式保证一个类只有一个实例,并提供一个全局访问点。在需要管理一些唯一资源(比如配置文件,数据库连接等)的场景下,单例模式可以避免重复创建实例和浪费资源的问题。

工厂模式

public interface Shape {
void draw();
}
public class Circle implements Shape {
@Override
public void draw() {
System.out.println("I'm a circle");
}
}
public class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("I'm a rectangle");
}
}
public 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;
}
}

工厂模式根据不同的条件创建不同的对象,将对象的创建和使用分离开来,避免了类与类之间的耦合。在需要大量对象创建的场景下(比如商品或者订单等),工厂模式可以提高代码的可复用性和灵活性。

观察者模式

public interface Observer {
void update(String message);
}
public interface Subject {
void attach(Observer observer);
void detach(Observer observer);
void notifyObservers();
}
public class MessagePublisher implements Subject {
private Listobservers = new ArrayList<>();
@Override
public void attach(Observer observer) {
observers.add(observer);
}
@Override
public void detach(Observer observer) {
observers.remove(observer);
}
@Override
public void notifyObservers() {
observers.forEach(observer ->observer.update("New message published."));
}
}
public class MessageSubscriber implements Observer {
private String name;
public MessageSubscriber(String name) {
this.name = name;
}
@Override
public void update(String message) {
System.out.printf("%s received message: %s\n", name, message);
}
}

观察者模式定义了一种一对多的依赖关系,多个观察者对象同时监听某一个主题对象的状态变化。在需要多个对象协同工作的场景下(比如新闻发布和订阅系统等),观察者模式可以提高代码的可扩展性和灵活性。

以上是 Java 中常见的设计模式及其运用场景,每种设计模式都有其独特的特点,需要根据具体的场景来选择合适的设计模式。通过运用设计模式,可以使我们的程序变得更加优雅和简洁。