Java中的常用设计模式是一组经过反复使用、多数人认可的软件设计经验,它可以解决特定的问题或提供一种通用的解决方案。下面将对单例模式、工厂模式和观察者模式进行详细解释,并提供示例代码。
解释:单例模式适用于需要频繁创建和销毁同一对象的情况,或者当一个类只需要一个实例就可以满足需求时。通过单例模式,可以避免重复创建相同对象,提高性能和资源利用率。
示例:
java复制代码
public class Singleton { | |
private static Singleton instance; | |
private Singleton() {} // 私有构造函数,防止外部直接实例化 | |
public static synchronized Singleton getInstance() { | |
if (instance == null) { | |
instance = new Singleton(); | |
} | |
return instance; | |
} | |
} |
解释:工厂模式适用于需要根据不同的条件创建不同类型对象的场景。通过使用工厂模式,可以将对象的创建逻辑集中在一个工厂类中,而不是在客户端代码中分散处理。这样可以在不修改客户端代码的情况下扩展系统。
示例:
java复制代码
public interface Shape { | |
void draw(); | |
} | |
public class Circle implements Shape { | |
public void draw() { | |
System.out.println("Inside Circle::draw() method."); | |
} | |
} | |
public class Rectangle implements Shape { | |
public void draw() { | |
System.out.println("Inside Rectangle::draw() method."); | |
} | |
} | |
public class ShapeFactory { | |
// 返回Shape对象引用 | |
public Shape getShape(String shapeType){ | |
if(shapeType == null){ | |
return null; | |
} | |
if(shapeType.equalsIgnoreCase("CIRCLE")){ | |
return new Circle(); // 创建Circle对象并返回其引用。 | |
} else if(shapeType.equalsIgnoreCase("RECTANGLE")){ // 如果需要添加新的形状,只需添加新的else if分支即可。 | |
return new Rectangle(); // 创建Rectangle对象并返回其引用。 | |
} | |
return null; // 如果输入的字符串既不是CIRCLE也不是RECTANGLE,则返回null。 | |
} | |
} |