`
wangchao_17915566
  • 浏览: 169523 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

学习单例模式

阅读更多

看了下单例模式,个人理解就是只能有一此实例化,这样对性能有一定提高。

下面说说学习小例子:

public class Singleton {
		private Singleton(){}
		private static Singleton instance = new Singleton();
		public static Singleton getInstance(){
			return instance;
		}
		public void sys(String s){
			System.out.println(s+"singleton.........");
		}
}

 

此类就是一个单例类,里面我写了一个方法

测试此类:

public class TestSingletion {

	public static void main(String args[]){

		Singleton.getInstance().sys("fdsfds");
	}
}

 

只能通过Singleton.getInstance()得到实例,调用类中方法。

这就是一个单例模式。

 

网上还有一种方法是:

public class Singleton { 
 private static Singleton instance = null;
 private Singleton(){
  //应该加上这个
 }
 public static synchronized Singleton getInstance(){
  if(instance==null){
    instance = new Singleton();
  }
  return instance;
 }
 public void sys(String s){
  System.out.println(s+"singleton.........");
 }
}

 网上说可以这样可以防止多个实例。

而我用测试类进行测试时,却可以实例化此类,不知道为何,谢谢能有人讨论下。

 

在各位的帮助下,我知道错了,谢谢

 

分享到:
评论
15 楼 SE7EN 2008-12-03  
wangchao_17915566 写道
星情泪 写道

这个主题贴改过吗 为什么我看着第二个例子没有问题啊

这个主题帖已改为正确的了,谢谢

我说咧,看着咋没啥问题嗫。
14 楼 wangchao_17915566 2008-12-03  
星情泪 写道

这个主题贴改过吗 为什么我看着第二个例子没有问题啊

这个主题帖已改为正确的了,谢谢
13 楼 hommy8 2008-12-03  
同步getInstance确实不好,因为其实只是在 new Singleton 对象时需要同步,以后在每次获得实例时都同步了,会影响效率...建议使用双检锁判断生成实例...同时建议看一下<<Head first 设计模式>>里面谈到单例模式一章,有比较全面嘅解析
12 楼 星情泪 2008-12-03  
这个主题贴改过吗 为什么我看着第二个例子没有问题啊
11 楼 wangchao_17915566 2008-12-03  
netfork 写道
哎,管理员在哪里啊~~~
发现只要不是纯技术问题,均可以在论坛(非入门版)里混~

我觉得此人思想有点..每个人都是从不懂-学习-懂,为什么我以我的方式理解的东西不能写出来,最起码我是用心写的,你找管理员干嘛?难道我自己总结下干扰你了?
10 楼 mosheo 2008-12-02  
楼主的贴倒是发的很多的哦
我一下午就看了你两个贴
呵呵
9 楼 netfork 2008-12-02  
tou3921 写道
synchronized  估计不好,虽说保证了没人调用时没有实例,但是调用者多了,还受同步限制,得不偿失、


支持!!
这也是为什么有了下面这篇文章:
http://www.ibm.com/developerworks/java/library/j-dcl.html
8 楼 tou3921 2008-12-02  
synchronized  估计不好,虽说保证了没人调用时没有实例,但是调用者多了,还受同步限制,得不偿失、
7 楼 wangchao_17915566 2008-12-02  
谢谢大家了
6 楼 quiii 2008-12-02  
nevergiveup3 写道
可能是构造器没有私有化。


下面那个 不是可能 是确实没把构造函数private
5 楼 vinci.zhang 2008-12-02  
楼主,第二个例子给类加上私有构造函数就可以了
private Singleton(){}
第一个类加载时生成实例;第二个是第一次调用时生成实例,通过synchronized保证唯一。
4 楼 xiaojiit 2008-12-02  
chenpingtai2008 写道
晕,你第二个写的 构造器都没私有化 叫什么单例子啊

小弟刚来的,学习喽,楼上说的对!
3 楼 chenpingtai2008 2008-12-01  
晕,你第二个写的 构造器都没私有化 叫什么单例子啊
2 楼 netfork 2008-12-01  
哎,管理员在哪里啊~~~
发现只要不是纯技术问题,均可以在论坛(非入门版)里混~
1 楼 nevergiveup3 2008-12-01  
可能是构造器没有私有化。

相关推荐

    设计模式——单例

    在学习单例模式时,除了理解其基本概念和实现,还需要关注如何在实际项目中正确、恰当地应用。通过阅读提供的"iOS 设计模式——单例"相关资料,可以深入理解在iOS开发环境中如何有效利用单例模式来优化代码结构和...

    java设计模式

    通过学习单例模式,可以更好地理解和掌握如何在Java程序中控制对象的创建,提高代码的复用性和性能。 设计模式不仅仅是关于代码结构,更重要的是理解其背后的意图和解决问题的思路。学习设计模式有助于提升编程思维...

    Mastering PHP Design Patterns_Code(pdf+mobi+epub+code_file).zip

    从基础到高级,读者可以逐步学习单例模式、工厂模式、观察者模式、装饰器模式、策略模式、代理模式等经典设计模式。每个章节都可能包含理论解释、代码示例以及实际应用场景,帮助读者将理论知识转化为实际编程技能。...

    详解单例模学习资料

    学习单例模式不仅仅是理解其基本概念,更重要的是要理解它在实际项目中的应用场景和限制。通过阅读这份"详解单例模学习资料",你将能够更好地掌握如何在Java项目中有效地使用单例模式,解决实际问题。同时,你也需要...

    JAVA程序员培训定制课程

    我们将会学习单例模式、工厂模式、观察者模式等经典模式,并了解它们在实际项目中的应用。 PPT标签可能意味着课程中会有演示文稿辅助教学,这些文稿通常包含关键概念的总结、示例代码以及课后练习,帮助学员更好地...

    毕向东静态06

    学习单例模式有助于理解对象的生命周期管理,以及在多线程环境下的资源控制。 在"黑马程序员_毕向东_Java基础视频教程第06天-09-面向对象(单例设计模式).avi" 这个文件中,毕向东老师可能会详细讲解以下内容: 1. ...

    潭州软件学院-javavip系统基础学习课程表 (1).docx

    学员还会学习单例模式,这是一种确保一个类只有一个实例的设计模式。同时,课程涵盖了类的继承、抽象类和接口的使用,讲解了`is-a`、`is-like-a`、`has-a`的关系,以及Object类的重要性。通过学习接口,学员能理解...

    张孝祥Java 就业培训教程(pdf版+源码)

    在面向对象的设计模式部分,教程会引导学员学习单例模式、工厂模式、观察者模式等常见的设计模式,这些都是在实际开发中经常用到的,能提升代码的可读性和可维护性。 当然,对于就业培训,实战项目经验至关重要。...

    U3D里的贪吃蛇教程

    在本教程中,我们将会学习如何使用...本教程的目标是提供一个易于理解的贪吃蛇游戏制作过程,让初学者能够通过编程在Unity中实现自己的游戏,并且通过学习单例模式和辅助脚本的使用,加深对C#编程和游戏设计的理解。

    java自学笔记

    - **常见设计模式**:学习单例模式、工厂模式、装饰者模式、观察者模式等经典设计模式的原理和应用。 6. Java EE - **Servlet与JSP**:理解Web开发的基础,如何编写Servlet和JSP页面。 - **MVC框架**:介绍...

    C#经典实例源码(198)

    - 学习单例模式、工厂模式、观察者模式等常见设计模式在WinForm应用中的应用。 通过这198个实例,开发者不仅可以熟悉C#语法,还能掌握WinForm应用开发的实战技巧。每一个实例都是一个独立的学习点,通过实践和调试...

    工作日每天一道前端大厂面试题

    13. **设计模式**:学习单例模式、工厂模式、观察者模式等经典设计模式,并理解其在JavaScript中的应用。 14. **浏览器兼容性**:理解不同浏览器之间的差异,以及如何使用polyfill或Babel进行代码转换,确保代码在...

    自己总结的java常用例题

    - 学习单例模式、工厂模式、装饰器模式、观察者模式等常见设计模式。 通过解决这些Java例题,你可以逐步巩固基础,提升编程技能,并为更高级的概念打下坚实的基础。不断地实践和应用,是成为一名优秀Java开发者的...

    java题目以及Java面试题和ASP.NET的技术题目java题目以及Java面试题和ASP.NET的技术题目java题目以及Java面试题和ASP.NET的技术题目

    - 学习单例模式、工厂模式、观察者模式等常见设计模式的原理和应用场景。 【ASP.NET技术题目】 ASP.NET是微软公司的Web应用程序开发框架,主要用于构建动态网站、Web应用和Web服务。以下是一些相关的知识点: 1....

    PHP技术文档

    5. 设计模式:学习单例模式、工厂模式、观察者模式等常见设计模式。 七、PHP框架与应用 介绍常见的PHP框架,如Laravel、Symfony、Yii等,理解框架的MVC模式,提高开发效率和代码质量。 八、性能优化与安全实践 1. ...

    java基础知识及技术

    学习单例模式、工厂模式、装饰器模式等基础设计模式,能提升代码质量和可维护性。 12. **单元测试与持续集成**:JUnit是Java中常用的单元测试框架,学习如何编写测试用例以及使用Maven或Gradle进行持续集成,可以...

    JAVA中单例模式的几种实现方式.doc

    为了保证单例模式在多线程环境下的正确性,可以在`getInstance()`方法上加上`synchronized`关键字,以确保同一时间只有一个线程能够执行该方法,从而避免创建多个实例。 ```java public class Singleton { private...

    java的课题有关题目的解析

    学习单例模式、工厂模式、观察者模式等常见设计模式,可以提高代码的可维护性和可扩展性。 12. **测试**:JUnit是Java的单元测试框架,学会编写测试用例和断言,确保代码的正确性,是良好编程习惯的一部分。 在...

    Kotlin语言教程&案例&相关项目资源

    - **对象(Object)**:学习单例模式,以及如何使用对象表达式和对象声明。 - **继承**:掌握继承机制,了解`open`关键字的作用。 - **多态**:通过接口和抽象类实现多态性。 - **伴生对象(Companion Object)**:学习...

Global site tag (gtag.js) - Google Analytics