21xrx.com
2024-09-17 04:11:57 Tuesday
登录
文章检索 我的文章 写文章
使用单例模式实现一个全局的应用程序配置类AppConfig,确保该类只能被初始化一次,然后可以在应用程序中的任何地方访问该实例。
2023-06-15 11:15:10 深夜i     --     --

在我的Java设计模式期末考试中,我被要求对几个不同的设计模式进行代码实现和分析。在这里,我想分享一些考试题目以及我对它们的解答。

1. 单例模式

解答:单例模式是一种通过限制创建对象的数量来确保在整个应用程序中只有一个实例被创建的设计模式。在这个题目中,我们可以使用以下代码实现:


public class AppConfig {

  private static AppConfig instance = null;

  private AppConfig(){}

  public static synchronized AppConfig getInstance(){

   if(instance == null){

     instance = new AppConfig();

   }

   return instance;

  }

  // other methods and properties

}

2. 工厂模式

题目:使用工厂模式实现一个简单的图形绘制程序,可以绘制圆形、矩形和三角形,用户只需提供所需形状的参数即可。

解答:工厂模式是一种将对象的创建过程封装在一个工厂类中的设计模式。在这个题目中,我们可以使用以下代码实现:


public interface Shape {

  void draw();

}

public class Circle implements Shape {

  @Override

  public void draw() {

   System.out.println("Drawing circle...");

  }

}

public class Rectangle implements Shape {

  @Override

  public void draw() {

   System.out.println("Drawing rectangle...");

  }

}

public class Triangle implements Shape {

  @Override

  public void draw() {

   System.out.println("Drawing triangle...");

  }

}

public class ShapeFactory {

  public static Shape getShape(String type) {

   Shape shape = null;

   switch (type) {

     case "circle":

      shape = new Circle();

      break;

     case "rectangle":

      shape = new Rectangle();

      break;

     case "triangle":

      shape = new Triangle();

      break;

     default:

      break;

   }

   return shape;

  }

}

3. 观察者模式

题目:使用观察者模式实现一个简单的股票市场监视程序,当某个股票的价格发生变化时,监视程序会通知订阅了该股票的观察者。

解答:观察者模式是一种定义对象之间一对多关系的设计模式,其中一个对象的状态发生变化时,所有依赖于它的对象都会得到通知并且自动更新。在这个题目中,我们可以使用以下代码实现:


public interface Observer {

  void update(double price);

}

public class StockPrice implements Subject {

  private List observers = new ArrayList<>();

  private double price;

  public void setPrice(double price) {

   this.price = price;

   notifyObservers();

  }

  @Override

  public void addObserver(Observer observer) {

   observers.add(observer);

  }

  @Override

  public void removeObserver(Observer observer) {

   observers.remove(observer);

  }

  @Override

  public void notifyObservers() {

   for (Observer observer : observers) {

     observer.update(price);

   }

  }

}

public interface Subject {

  void addObserver(Observer observer);

  void removeObserver(Observer observer);

  void notifyObservers();

}

public class StockMarketMonitor implements Observer {

  private String stockName;

  public StockMarketMonitor(String stockName)

   this.stockName = stockName;

 

  @Override

  public void update(double price) {

   System.out.println(stockName + " price updated: " + price);

  }

}

综上所述,以上是我在Java设计模式期末考试中遇到的一些题目以及我的解答。这些设计模式都是在Java编程中非常实用的工具。当然,要掌握这些模式需要投入时间和精力去学习和实践。我希望这些代码能够帮助你进一步了解这些设计模式,并在今后的开发过程中提高你的编程技巧。

  
  

评论区

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