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小时内删除。