21xrx.com
2025-03-27 12:25:05 Thursday
文章检索 我的文章 写文章
Java设计模式清华大学课后题答案解析
2023-06-14 16:09:08 深夜i     --     --

Java设计模式是每一个Java开发人员都需要掌握的重要内容。在清华大学的Java开发课程中,学生通常会收到一些关于Java设计模式的课后题。本篇文章将围绕这些问题,由Java专家于卫红为您详细讲解,并提供代码案例。

问题1:请简述单例模式Singleton的使用场景以及实现方式。

单例模式是一种常用的设计模式,在许多场景下都可以使用。例如在多线程环境下,使用单例模式可以确保只有一个实例被创建,无论有多少个线程在使用该实例。其实现方式主要有两种:饿汉式和懒汉式。

以饿汉式为例:

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

以懒汉式为例:

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

问题2:请简述工厂模式Factory的使用场景以及实现方式。

工厂模式是一种通用的设计模式,它可以用于创建不同的对象,且无需暴露创建逻辑。在实现过程中,一般会定义一个工厂类,在其中定义创建对象的方法。

以简单工厂模式为例:

public class ShapeFactory {
  //使用 getShape 方法获取形状类型的对象
  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();
   } else if(shapeType.equalsIgnoreCase("SQUARE")){
     return new Square();
   }
   return null;
  }
}

问题3:请简述观察者模式Observer的使用场景以及实现方式。

观察者模式是一种常用的设计模式,在“一对多”的情况下非常有效。例如,在一些软件中,需要实现邮件提醒的功能,那么可以使用观察者模式,将邮件提醒的功能实现为观察者,将用户实现为被观察者。实现过程中,一般会定义抽象被观察者和抽象观察者,然后分别实现具体的子类。

以抽象被观察者为例:

import java.util.ArrayList;
import java.util.List;
public abstract class Subject {
  private List
  observers = new ArrayList 
  
   ();
  
 
  public void attach(Observer observer){
   observers.add(observer);   
  }
  public void detach(Observer observer){
   observers.remove(observer);
  }
  public void notifyObservers(){
   for (Observer observer : observers) {
     observer.update();
   }
  }
}

根据以上三个问题及其答案,可以得出以下关键词:

1. Java设计模式

2. 清华大学

3. 单例模式、工厂模式、观察者模式

  
  

评论区