Java设计模式:深入解析单例模式
需积分: 9 25 浏览量
更新于2024-08-18
收藏 113KB PPT 举报
"设计模式的学习笔记,包括简单工厂模式和单例模式的介绍"
设计模式是软件工程中经过实践证明有效的解决常见问题的模板,它们提供了一种标准的方式来组织和复用代码,使得代码更加可读、可维护。本文将重点讨论两种设计模式:单例模式和简单工厂模式。
首先,我们来看单例模式。单例模式的主要目的是确保在整个应用程序中,对于特定类的实例化,只有一个全局访问点,也就是只有一个实例存在。这在某些场景下非常有用,例如管理共享资源或控制系统级服务的访问。单例模式通常分为两种实现方式:饿汉式和懒汉式。
1. 饿汉式单例类:这种实现方式在类加载时就完成了实例化,所以线程安全,但是可能会造成资源的浪费,因为即使没有使用到单例,它也会被创建。
```java
public class Singleton {
private static final Singleton INSTANCE = new Singleton();
private Singleton() {}
public static Singleton getInstance() {
return INSTANCE;
}
}
```
2. 懒汉式单例类:这种方式延迟了实例化,只有在真正需要时才会创建。然而,如果不进行同步控制,多线程环境下可能产生多个实例,所以需要使用synchronized关键字保证线程安全。
```java
public class Singleton {
private static Singleton instance;
private Singleton() {}
public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
```
接下来,我们转向简单工厂模式。简单工厂模式是一种创建型设计模式,它提供一个静态方法来创建对象,而不是让客户端代码直接new对象。这样做的好处是可以将对象的创建逻辑封装起来,使得添加新的产品类型时,无需修改客户端代码。
在给出的例子中,我们有一个`Fruit`接口,代表抽象产品,以及它的两个实现类`Apple`和`Pear`,代表具体产品。`SimpleFactory`类则作为工厂,根据输入的参数(fruitname)返回相应的Fruit对象。当添加新的水果类型时,需要在`SimpleFactory`中增加新的if判断,这违反了开闭原则(对扩展开放,对修改关闭)。
为了解决这个问题,我们可以引入工厂模式,创建一个抽象工厂`FruitFactory`,然后为每种水果创建一个具体的工厂类,如`AppleFactory`和`PearFactory`。这样,添加新产品时,只需要创建新的工厂类,而无需修改已有代码。这使得系统更具扩展性。
总结来说,单例模式和简单工厂模式都是设计模式中的重要成员。单例模式用于保证类的唯一实例,而简单工厂模式则提供了一种更灵活的产品创建方式。理解并恰当运用这些设计模式,能够帮助我们编写出更健壮、可维护的软件系统。
2022-08-08 上传
2019-07-26 上传
2020-10-25 上传
2020-10-15 上传
2020-12-18 上传
2020-12-22 上传
2010-08-16 上传
2021-01-20 上传
顾阑
- 粉丝: 16
- 资源: 2万+
最新资源
- 掌握压缩文件管理:2工作.zip文件使用指南
- 易语言动态版置入代码技术解析
- C语言编程实现电脑系统测试工具开发
- Wireshark 64位:全面网络协议分析器,支持Unix和Windows
- QtSingleApplication: 确保单一实例运行的高效库
- 深入了解Go语言的解析器组合器PARC
- Apycula包安装与使用指南
- AkerAutoSetup安装包使用指南
- Arduino Due实现VR耳机的设计与编程
- DependencySwizzler: Xamarin iOS 库实现故事板 UIViewControllers 依赖注入
- Apycula包发布说明与下载指南
- 创建可拖动交互式图表界面的ampersand-touch-charts
- CMake项目入门:创建简单的C++项目
- AksharaJaana-*.*.*.*安装包说明与下载
- Arduino天气时钟项目:源代码及DHT22库文件解析
- MediaPlayer_server:控制媒体播放器的高级服务器