Java 23种设计模型详解
Java 23种设计模型是一组在软件开发中广泛使用的可重用的设计思想或解决方案。了解这些设计模型可以帮助软件开发人员更容易地设计和开发高质量的软件系统。本篇攻略详细介绍了Java 23种设计模型,其中包含了每种模型的定义、使用场景、示例程序以及注意事项。
单例模式
定义:确保一个类只有一个实例,并提供该实例的全局访问点。
使用场景:多线程环境下需要共享某些资源,并且只需要一个实例时可以使用单例模式。
示例程序:
public class Singleton {
private static Singleton instance;
private Singleton() {}
public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
注意事项:
1. 单例模式可能会对单例类进行子类化,但不推荐。
2. 如果单例模式不是由主线程创建的,则可能会出现可见性问题。
工厂模式
定义:定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法使一个类的实例化延迟到其子类。
使用场景:当我们需要根据特定的输入来生成不同的对象时,可以使用工厂模式。
示例程序:
public interface Shape {
void draw();
}
public class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("Rectangle: draw() method");
}
}
public class Circle implements Shape {
@Override
public void draw() {
System.out.println("Circle: draw() method");
}
}
public class ShapeFactory {
public static final String RECTANGLE = "RECTANGLE";
public static final String CIRCLE = "CIRCLE";
public static Shape getShape(String type) {
if (type == null) {
return null;
}
if (type.equalsIgnoreCase(RECTANGLE)) {
return new Rectangle();
} else if (type.equalsIgnoreCase(CIRCLE)) {
return new Circle();
}
return null;
}
}
public class Main {
public static void main(String[] args) {
Shape rectangle = ShapeFactory.getShape(ShapeFactory.RECTANGLE);
rectangle.draw();
Shape circle = ShapeFactory.getShape(ShapeFactory.CIRCLE);
circle.draw();
}
}
注意事项:
1. 工厂模式中,如果需要添加新的产品,需要扩展工厂类。
2. 工厂模式可能会增加系统中的类的数量。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 23种设计模型详解 - Python技术站