21xrx.com
2025-03-26 05:59:20 Wednesday
文章检索 我的文章 写文章
Java 常用设计模式及代码实现
2023-06-15 06:54:35 深夜i     6     0
设计模式 Java 单例模式 工厂模式 观察者模式

在编写 Java 代码时,设计模式是必不可少的。设计模式是一种解决特定问题的代码结构,它通过经过时间测试的方式来解决一些常见的问题。下面我们就来了解一些 Java 常用的设计模式及其代码实现。

1. 单例模式

单例模式是一种创建模式,用于确保只有一个实例对象被创建。在 Java 中,我们可以使用以下方法来实现单例模式:

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

2. 工厂模式

工厂模式是一种创建模式,它基于定义一个接口来创建对象,但让子类决定实例化哪个类。在 Java 中,我们可以使用以下方法来实现工厂模式:

public interface Shape {
  void draw();
}
public class Rectangle implements Shape {
  @Override
  public void draw() {
   System.out.println("Inside Rectangle::draw() method.");
  }
}
public class Circle implements Shape {
  @Override
  public void draw() {
   System.out.println("Inside Circle::draw() method.");
  }
}
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;
  }
}

3. 观察者模式

观察者模式是一种行为模式,其中一个对象被修改后,其它依赖于它的对象都会收到通知。在 Java 中,我们可以使用以下方法来实现观察者模式:

public interface Observer {
  void update();
}
public interface Subject {
  void attach(Observer observer);
  void detach(Observer observer);
  void notifyObservers();
}
public class ConcreteSubject implements Subject {
  private List
  observers = new ArrayList 
  
   ();
  
 
  private String state;
 
  @Override
  public void attach(Observer observer) {
   observers.add(observer);
  }
  @Override
  public void detach(Observer observer) {
   observers.remove(observer);
  }
  @Override
  public void notifyObservers() {
   for (Observer observer : observers) {
     observer.update();
   }
  }
  public String getState()
   return state;
 
  public void setState(String state) {
   this.state = state;
   notifyObservers();
  }
}
public class ConcreteObserver implements Observer {
  private String name;
  private Subject subject;
  public ConcreteObserver(String name, Subject subject) {
   this.name = name;
   this.subject = subject;
   this.subject.attach(this);
  }
  @Override
  public void update() {
   System.out.println(name + " notified!");
  }
}

  
  

评论区