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() {
System.out.println("Draw a circle.");
}
}
public class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("Draw a rectangle.");
}
}
public class ShapeFactory {
public Shape createShape(String shapeType) {
if (shapeType.equalsIgnoreCase("circle")) {
return new Circle();
} else if (shapeType.equalsIgnoreCase("rectangle")) {
return new Rectangle();java中常用的设计模式有哪些
}
return null;
}
}
```
2. 抽象工厂模式的代码示例:
```java
public interface Shape {
void draw();
}
public interface Color {
void fill();
}
public class Circle implements Shape {
@Override
public void draw() {
System.out.println("Draw a circle.");
}
}
public class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("Draw a rectangle.");
}
}
public class Red implements Color {
@Override
public void fill() {
System.out.println("Fill with red color.");
}
}
public class Blue implements Color {
@Override
public void fill() {
System.out.println("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 (shapeType.equalsIgnoreCase("circle")) {
return new Circle();
} else if (shapeType.equalsIgnoreCase("rectangle")) {
return new Rectangle();
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论