java设计模式面试题

阅读: 评论:0

2024年2月4日发(作者:)

java设计模式面试题

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 observers = new ArrayList<>();

@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 设计模式面试题,分别涉及到单例模式、工厂模式和观察者模式。面试官可能会进一步向你提问设计模式的原理、适用场景及优缺点,建议在准备面试时深入了解这些内容,以便能够给出更好的回答。

总结:

设计模式是软件开发中重要的概念之一,掌握常见的设计模式并能够在面试中灵活运用是提升面试竞争力的重要一环。本文对单例模式、工厂模式和观察者模式进行了简要介绍和代码示例,希望能对读者在面试中的准备有所帮助。

java设计模式面试题

本文发布于:2024-02-04 06:54:56,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170700089652537.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:模式   设计模式   面试   提供   代码   单例
留言与评论(共有 0 条评论)
   
验证码:
排行榜

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23