21xrx.com
2024-09-20 06:07:03 Friday
登录
文章检索 我的文章 写文章
Java面试必备:常问的设计模式及代码案例
2023-06-17 03:12:42 深夜i     --     --
Java面试 设计模式 代码案例

在Java面试中,设计模式是一个常见的问题。因为设计模式是一种经过实践验证的解决问题的方式,它可以使代码更加优雅,更加容易维护和扩展。本文将介绍一些Java面试中常见的设计模式,并提供一些代码案例。

1. 单例模式

单例模式是一种创建型模式,它确保一个类只有一个实例,并提供一个全局访问点。实现方式有两种,分别是饿汉式和懒汉式。以下是饿汉式的代码实现:


public class Singleton {

  private static final Singleton INSTANCE = new Singleton();

  private Singleton() {}

  public static Singleton getInstance()

    return INSTANCE;

  

}

2. 工厂模式

工厂模式是一种创建型模式,它提供了一个创建对象的接口,但是由子类决定实例化哪个类。这样可以将对象的创建与使用相分离。以下是工厂模式的代码实现:


public interface Shape {

  void draw();

}

public class Rectangle implements Shape {

  public void draw() {

    System.out.println("Inside Rectangle::draw() method.");

  }

}

public class Square implements Shape {

  public void draw() {

    System.out.println("Inside Square::draw() method.");

  }

}

public class ShapeFactory {

  public static Shape getShape(String shapeType) {

    if (shapeType == null)

      return null;

    

    if (shapeType.equalsIgnoreCase("RECTANGLE")) {

      return new Rectangle();

    } else if (shapeType.equalsIgnoreCase("SQUARE")) {

      return new Square();

    }

    return null;

  }

}

3. 观察者模式

观察者模式是一种行为型模式,它定义对象间的一种一对多的依赖关系,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。以下是观察者模式的代码实现:


public interface Observer {

  void update();

}

public class ConcreteObserver implements Observer {

  public void update() {

    System.out.println("ConcreteObserver has been notified.");

  }

}

public interface Subject {

  void attach(Observer observer);

  void detach(Observer observer);

  void notifyObservers();

}

public class ConcreteSubject implements 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();

    }

  }

}

通过学习这三个常见的设计模式,可以为Java面试增加自己的竞争力。除了这三个模式以外,还有很多优秀的设计模式可以学习和应用。只有不断学习和实践,才能写出更加优秀的代码。

  
  

评论区

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