相信看了本文后,对你的面试是有一定帮助的!
?点赞?收藏?不迷路!?
设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它是解决特定场景下常见问题的一种可重用解决方案。设计模式不是代码,而是对问题和解决方案的描述。使用设计模式可以提高代码的可读性、可维护性,并使代码更加灵活和可扩展。
Java 中单例设计模式有多种实现方式,其中比较常见的有懒汉式、饿汉式、双重检查锁等。以下是两种常见的实现方式:
懒汉式(线程不安全):
public class Singleton {
private static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
饿汉式(线程安全):
public class Singleton {
private static final Singleton instance = new Singleton();
private Singleton() {}
public static Singleton getInstance() {
return instance;
}
}
工厂模式的主要好处包括:
装饰器模式允许你通过将对象放入包含行为的特殊封装类中来给对象添加新的行为。以下是一个简单的 Java 装饰器模式的例子,假设有一个 Coffee
类,我们可以给它添加不同的装饰器,如 MilkDecorator
和 SugarDecorator
:
// 基础组件
interface Coffee {
String getDescription();
double cost();
}
// 具体组件
class SimpleCoffee implements Coffee {
@Override
public String getDescription() {
return "Simple Coffee";
}
@Override
public double cost() {
return 2.0;
}
}
// 装饰器
abstract class CoffeeDecorator implements Coffee {
protected Coffee decoratedCoffee;
public CoffeeDecorator(Coffee coffee) {
this.decoratedCoffee = coffee;
}
@Override
public String getDescription() {
return decoratedCoffee.getDescription();
}
@Override
public double cost() {
return decoratedCoffee.cost();
}
}
// 具体装饰器
class MilkDecorator extends CoffeeDecorator {
public MilkDecorator(Coffee coffee) {
super(coffee);
}
@Override
public String getDescription() {
return super.getDescription() + ", with Milk";
}
@Override
public double cost() {
return super.cost() + 0.5;
}
}
class SugarDecorator extends CoffeeDecorator {
public SugarDecorator(Coffee coffee) {
super(coffee);
}
@Override
public String getDescription() {
return super.getDescription() + ", with Sugar";
}
@Override
public double cost() {
return super.cost() + 0.2;
}
}
使用设计模式能够提高代码的可读性、可维护性,以及系统的灵活性和可扩展性。然而,并不是在所有情况下都能直接提高效率。设计模式的使用应该根据具体的问题和需求来判断。
总体而言,设计模式是一种有助于构建可维护和可扩展软件的良好实践,但其使用应该谨慎,根据具体情况来选择合适的模式。