21xrx.com
2024-09-20 09:05:00 Friday
登录
文章检索 我的文章 写文章
Java设计模式-开发更优雅的软件系统 关键词:Java、设计模式、代码实现
2023-06-16 16:33:09 深夜i     --     --

我最近在学习Java设计模式,一种可复用、可扩展并易于维护的解决问题的思路。这些模式可以帮助我们在设计软件系统时更好地组织代码以实现最佳实践。

我学习的第一个设计模式是单例模式,通过这个模式,我可以创建一个类的唯一实例,并确保全局只有一个对象对其进行访问。以下是单例模式的代码实现:


public class Singleton {

  private static Singleton instance;

  private Singleton() {}

  public static Singleton getInstance() {

    if(instance == null) {

      instance = new Singleton();

    }

    return instance;

  }

}

接下来我学习了工厂模式,它允许我们根据环境或条件的不同创建不同的类实例,然后统一调度这些实例的行为。以下是工厂模式的代码实现:


public interface Animal {

  public void eat();

}

public class Dog implements Animal {

  @Override

  public void eat() {

    System.out.println("Dog is eating!");

  }

}

public class Cat implements Animal {

  @Override

  public void eat() {

    System.out.println("Cat is eating!");

  }

}

public class AnimalFactory {

  public Animal createAnimal(String type) {

    if(type.equalsIgnoreCase("dog")) {

      return new Dog();

    }

    else if(type.equalsIgnoreCase("cat")) {

      return new Cat();

    }

    return null;

  }

}

最后,我学习了观察者模式,它允许对象在不与其他对象紧密耦合的情况下,订阅并接收另一个对象的状态变化通知。以下是观察者模式的代码实现:


public interface Observer {

  public void update(String message);

}

public interface Observable {

  public void registerObserver(Observer o);

  public void removeObserver(Observer o);

  public void notifyObservers();

}

public class NewsAgency implements Observable {

  private List observers = new ArrayList<>();

  private String news;

  public void setNews(String news) {

    this.news = news;

    notifyObservers();

  }

  @Override

  public void registerObserver(Observer o) {

    observers.add(o);

  }

  @Override

  public void removeObserver(Observer o) {

    observers.remove(o);

  }

  @Override

  public void notifyObservers() {

    for(Observer o : observers) {

      o.update(news);

    }

  }

}

public class NewsChannel implements Observer {

  private String news;

  @Override

  public void update(String news) {

    this.news = news;

    System.out.println("Received news: " + news);

  }

}

通过学习这些设计模式,我能够更好地组织我的代码,并开发出更优雅、更简洁的软件系统。我很高兴能够分享这些重要的模式,希望我的文章能对你有所启发。

  
  

评论区

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