21xrx.com
2024-06-02 23:11:21 Sunday
登录
文章检索 我的文章 写文章
Java 常用设计模式及代码实现
2023-06-15 06:54:35 深夜i     --     --
设计模式 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!");

  }

}

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复