2024年2月4日发(作者:)
java设计模式面试题
Java 设计模式面试题
设计模式是软件开发中常用的解决问题的方法论,它通过提供经过验证的解决方案来应对各种软件设计问题。在面试中,设计模式也是经常被问到的内容之一。本文将介绍一些常见的 Java 设计模式面试题,并给出对应的解答。
一、单例模式(Singleton Pattern)
单例模式是一种创建型设计模式,其目的是保证一个类只有一个实例,并提供一个全局访问点。常见的实现方式有懒汉式和饿汉式。
1. 懒汉式实现单例模式的代码示例:
```java
public class Singleton {
private static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
2. 饿汉式实现单例模式的代码示例:
```java
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton() {}
public static Singleton getInstance() {
return instance;
}
}
```
二、工厂模式(Factory Pattern)
工厂模式是一种创建型设计模式,其通过提供一个公共接口来创建对象,而不需要暴露对象的创建逻辑。
1. 简单工厂模式的代码示例:
```java
public interface Shape {
void draw();
}
public class Circle implements Shape {
@Override
public void draw() {
n("Draw a circle.");
}
}
public class Rectangle implements Shape {
@Override
public void draw() {
n("Draw a rectangle.");
}
}
public class ShapeFactory {
public Shape createShape(String shapeType) {
if (IgnoreCase("circle")) {
return new Circle();
} else if (IgnoreCase("rectangle")) {
return new Rectangle();
}
return null;
}
}
```
2. 抽象工厂模式的代码示例:
```java
public interface Shape {
void draw();
}
public interface Color {
void fill();
}
public class Circle implements Shape {
@Override
public void draw() {
n("Draw a circle.");
}
}
public class Rectangle implements Shape {
@Override
public void draw() {
n("Draw a rectangle.");
}
}
public class Red implements Color {
@Override
public void fill() {
n("Fill with red color.");
}
}
public class Blue implements Color {
@Override
public void fill() {
n("Fill with blue color.");
}
}
public abstract class AbstractFactory {
public abstract Shape createShape(String shapeType);
public abstract Color createColor(String colorType);
}
public class ShapeFactory extends AbstractFactory {
@Override
public Shape createShape(String shapeType) {
if (IgnoreCase("circle")) {
return new Circle();
} else if (IgnoreCase("rectangle")) {
return new Rectangle();
}
return null;
}
@Override
public Color createColor(String colorType) {
return null;
}
}
public class ColorFactory extends AbstractFactory {
@Override
public Shape createShape(String shapeType) {
return null;
}
@Override
public Color createColor(String colorType) {
if (IgnoreCase("red")) {
return new Red();
} else if (IgnoreCase("blue")) {
return new Blue();
}
return null;
}
}
```
三、观察者模式(Observer Pattern)
观察者模式是一种行为型设计模式,其定义了对象之间的一对多依赖关系,使得当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
1. 观察者模式的代码示例:
```java
import ist;
import ;
public interface Observer {
void update(String message);
}
public class ConcreteObserver implements Observer {
private String name;
public ConcreteObserver(String name) {
= name;
}
@Override
public void update(String message) {
n(name + " received message: " + message);
}
}
public interface Subject {
void attach(Observer observer);
void detach(Observer observer);
void notifyObservers(String message);
}
public class ConcreteSubject implements Subject {
private List
@Override
public void attach(Observer observer) {
(observer);
}
@Override
public void detach(Observer observer) {
(observer);
}
@Override
public void notifyObservers(String message) {
for (Observer observer : observers) {
(message);
}
}
}
```
以上是三个常见的 Java 设计模式面试题,分别涉及到单例模式、工厂模式和观察者模式。面试官可能会进一步向你提问设计模式的原理、适用场景及优缺点,建议在准备面试时深入了解这些内容,以便能够给出更好的回答。
总结:
设计模式是软件开发中重要的概念之一,掌握常见的设计模式并能够在面试中灵活运用是提升面试竞争力的重要一环。本文对单例模式、工厂模式和观察者模式进行了简要介绍和代码示例,希望能对读者在面试中的准备有所帮助。
本文发布于:2024-02-04 06:54:56,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170700089652537.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |