admin 管理员组

文章数量: 887031


2024年1月10日发(作者:matlab中的fseek函数)

面试题-java设计模式举例

在面试中,可能会要求你举例说明一些常见的设计模式,特别是在Java编程语言中的应用。下面是一些Java设计模式的例子:1. 单例模式(Singleton Pattern):

意图:确保一个类仅有一个实例,并提供一个全局访问点。

例子:数据库连接池、配置管理器、线程池等。

Java实现:

javapublic class Singleton {

private static Singleton instance;

private Singleton() {}

public static synchronized Singleton getInstance() {

if (instance == null) {

instance = new Singleton();

}

return instance;

}

}

2. 工厂模式(Factory Pattern):

意图:创建一个接口,但是让子类决定要实例化的类是哪一个。工厂方法让类的实例化推迟到子类中进行。

例子:日志记录器、数据库连接等。

Java实现:

javapublic interface Animal {

void speak();

}

public class Dog implements Animal {

@Override

public void speak() {

n("Woof!");

}

}

public class Cat implements Animal {

@Override

public void speak() {

n("Meow!");

}

}

public class AnimalFactory {

public Animal getAnimal(String type) {

if ("dog".equalsIgnoreCase(type)) {

return new Dog();

} else if ("cat".equalsIgnoreCase(type)) {

return new Cat();

}

return null;

}

}

3. 观察者模式(Observer Pattern):

意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

例子:新闻发布系统、股票价格更新系统等。

Java实现:Java内置的able和er接口提供了观察者模式的实现。也可以使用更现代的tyChangeListener。

4. 装饰器模式(Decorator Pattern):

意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。

例子:Java I/O流中的BufferedInputStream、ObjectInputStream等。

5. 策略模式(Strategy Pattern):

意图:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。

例子:排序算法(快速排序、归并排序等)。

6. 适配器模式(Adapter Pattern):

意图:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

例子:旧接口到新接口的转换。

7. 模板方法模式(Template Method Pattern):

意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

例子:框架中的基础方法实现,如Spring框架中的JdbcTemplate。


本文标签: 模式 接口 子类