21xrx.com
2024-09-19 09:21:56 Thursday
登录
文章检索 我的文章 写文章
学习Java常用设计模式,提高编程水平
2023-06-15 12:59:08 深夜i     --     --
Java 设计模式 单例模式 工厂模式 观察者模式

Java是一门非常流行的编程语言,也是企业级应用开发中最常用的语言之一。在实际的开发中,很多开发者仅仅是根据自己的经验和直觉来设计代码,这样的代码可能具有不确定性和不稳定性,也不便于维护和扩展。为了解决这些问题,我们可以采用Java常用的设计模式来提高代码的可读性、可维护性和可扩展性。

本文将介绍Java中常用的设计模式,并提供实际的代码案例来帮助您更好地理解它们的实现方式和应用场景。具体内容如下:

1. 单例模式

单例模式用于创建只有一个实例的对象,并提供统一的访问点。这在一些场景下非常有用,例如线程池、数据库连接池等。下面是一个简单的单例模式实现:


public class Singleton {

  private static Singleton instance;

  private Singleton() {}

  public static Singleton getInstance() {

    if (instance == null) {

      instance = new Singleton();

    }

    return instance;

  }

}

2. 工厂模式

工厂模式用于通过工厂类来创建一组相关或依赖对象,并将创建过程封装在工厂类中。下面是一个简单的工厂模式实现:


public interface Product {

  void doSomething();

}

public class ProductA implements Product {

  @Override

  public void doSomething() {

    System.out.println("Product A do something...");

  }

}

public class ProductB implements Product {

  @Override

  public void doSomething() {

    System.out.println("Product B do something...");

  }

}

public interface Factory {

  Product create();

}

public class FactoryA implements Factory {

  @Override

  public Product create() {

    return new ProductA();

  }

}

public class FactoryB implements Factory {

  @Override

  public Product create() {

    return new ProductB();

  }

}

3. 观察者模式

观察者模式用于在对象间建立一种一对多的依赖关系,当一个对象状态发生改变时,依赖它的所有对象都会得到通知并自动更新。下面是一个简单的观察者模式实现:


public class Subject {

  private List observers = new ArrayList<>();

  private int state;

  public int getState()

    return state;

  

  public void setState(int state) {

    this.state = state;

    notifyAllObservers();

  }

  public void attach(Observer observer) {

    observers.add(observer);

  }

  public void notifyAllObservers() {

    for (Observer observer : observers) {

      observer.update();

    }

  }

}

public abstract class Observer {

  protected Subject subject;

  public Observer(Subject subject) {

    this.subject = subject;

    this.subject.attach(this);

  }

  public abstract void update();

}

public class ObserverA extends Observer {

  public ObserverA(Subject subject) {

    super(subject);

  }

  @Override

  public void update() {

    System.out.println("Observer A updated state: " + subject.getState());

  }

}

public class ObserverB extends Observer {

  public ObserverB(Subject subject) {

    super(subject);

  }

  @Override

  public void update() {

    System.out.println("Observer B updated state: " + subject.getState());

  }

}

以上就是本文介绍的几个常用的设计模式,希望能帮助您提高Java编程水平。如果您有了更好的理解和学习收获,也可以尝试使用其他设计模式来优化自己的代码。

  
  

评论区

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