`

单例模块儿

 
阅读更多
#单例模块,存在的意义就是在模块被载入类时,给类添加类方法和创建对象实例等
module   Singleton
  #这个方法在模块被载入类时调用,传入的参数是  类对象
  def self.included(base) 
    #这个操作把另一个模块直接添加到Class对象上。类对象上的方法就是类方法。尽管模块中的方法是模块的实例方法。
    base.extend(SingletonClass); #让类对象引入另外一个模块:SingletonClass
    puts("Singleton  Include!");
    #创建类的实例,然后把类的new方法设为私有类方法,防止被调用,最后把类的实例存放到类的方法中。
    myInstance=base.new();  #实例化
    base.private_class_method :new #将该类对象的new方法设置为private,让外部无法访问
    base.setClass(myInstance); #这个setClass 方法是SingletonClass模块的实例方法,但是因为base.extend(SingletonClass)将模块直接添加到了Class对象上,即base上,所以这个时候setClass是base这个类对象的实例方法,即是某目标类的类方法。
  end
end

   
#这个模块附加上去的类方法,把类实例保存在模块的实例变量中。也就是目标类的类变量中。
module  SingletonClass
  def setClass(base)
    puts("setClass");
    @myClass=base;
    return  @myClass;
  end
  #单例方法,仅仅返回类的保护实例变量。
  def instance()
    puts("instance");
    return  @myClass;
  end
end


class Test
  include Singleton;
  def say(val)
    puts(val);
  end
end



test=Test.instance();

test.say("sssssss");

#test=Test.new();  # fail
分享到:
评论

相关推荐

    儿童商品管理系统

    7. **设计模式**:虽然对于新手来说可能较难,但了解基本的设计模式(如单例、工厂或观察者模式)可以帮助提升代码的可读性和可维护性。 8. **测试与调试**:编写测试用例以确保系统的功能正确无误,学会使用调试...

    学习设计模式儿开发的Java版坦克大战游戏.zip

    在这个Java实现的坦克大战游戏中,我们可以看到许多设计模式的巧妙应用,这使得代码更加模块化、可维护且易于扩展。 首先,"工厂模式"在游戏对象的创建中扮演了重要角色。游戏中的坦克、子弹、障碍物等都是游戏对象...

    Android应用源码之roboguice--IT计算机-毕业设计.zip

    Guice是一个实现了依赖注入(Dependency Injection,简称DI)的Java库,它可以帮助开发者在不使用单例、工厂或者构造函数的情况下,轻松地创建和管理对象。在Android应用中,依赖注入可以帮助我们解耦组件,使得代码...

    学生管理系统java源代码

    此外,为了提高代码的复用性和可维护性,常使用设计模式,如工厂模式、单例模式和策略模式等。 对于数据库部分,描述中提到的数据库可能是MySQL、Oracle或SQL Server等,需要正确配置JDBC驱动和连接参数。同时,...

    毕业论文设计-IT计算机-JAVA网络通信系统的研究与开发(论文+源代码+开题报告).zip

    7. **源代码结构**:一份完整的项目应该有清晰的源代码结构,包括主程序、网络通信模块、数据处理模块、用户界面模块等,各模块之间通过接口进行交互。 8. **开题报告**:开题报告会阐述研究背景、目的、意义、技术...

    设计模式03.DOC

    在创建型模式中,有五个主要模式:Prototype(原型模式)、Abstract Factory(抽象工厂模式)、Builder(建造者模式)、Singleton(单例模式)和Factory Method(工厂方法模式)。这些模式的共同目标是封装系统使用...

    Android eoe社区客户端-IT计算机-毕业设计.zip

    2. 单例模式:网络请求、数据库操作等需要全局共享的对象,通常采用单例模式来确保唯一实例,防止资源浪费。 3. 依赖注入:如使用Dagger或Koin进行依赖注入,减少代码耦合,提高组件复用性。 三、源码结构分析 一...

    java实现别踩白块儿源码-DonationManagementSystem:使用面向对象方法,用Java设计和实现了捐赠管理系统

    4. **设计模式**:可能应用了单例模式(Singleton)来确保捐赠管理系统的实例在整个程序中唯一,工厂模式(Factory)用于创建对象,或者观察者模式(Observer)用于实时更新用户界面的捐赠信息。 5. **事件驱动编程...

    pdd_2020

    "pdd_2020-main"可能是该项目的主代码库或者主要模块。 在Java编程中,我们涉及的知识点广泛且深入。首先,Java是一种多平台、面向对象的编程语言,它的设计目标是具有良好的可移植性、健壮性和安全性。以下是几个...

    35个行业-微信小程序源码.zip.zip

    - 设计模式:源码中可能包含各种设计模式,如单例模式、工厂模式等,有助于提升代码的可维护性和复用性。 - 用户体验:分析优秀源码的交互设计,能帮助开发者打造更符合用户习惯的界面和流程。 - 性能优化:学习...

    Android应用源码之Matrix-IT计算机-毕业设计.zip

    另外,考虑到毕业设计可能涉及到论文撰写,源码中可能包含了模块化设计、设计模式的应用,比如单例模式、工厂模式等,以及如何利用版本控制工具如Git进行团队协作。 最后,为了确保应用的兼容性和性能,开发者需要...

    IOS应用源码Demo-时钟视图-毕设学习.zip

    第五,为了使代码更加模块化和可重用,开发者可能会创建自定义控件和类别(Category)。自定义控件可以封装复杂的视图逻辑,而类别则可以扩展已有的Foundation或UIKit类,增加新的功能。 最后,对于毕业设计而言,...

    毕业设计论文-IT计算机-[企业政府]中帆智能建站系统基础版JSP版_basic3-源码.zip

    系统可能包含权限管理模块,以确保不同级别的用户访问相应的信息和服务。 3. **源码分析**:提供的源码包含了系统的核心组件和功能实现,这对于学习者来说是一份宝贵的教育资源。通过阅读和理解源码,可以深入理解...

    python面向对象

    assert singleton1 is singleton2 # 单例模式验证 ``` #### 五、异常处理 1. **基本异常处理**: - 使用`try...except`结构捕获异常。 ```python try: x = 1 / 0 except ZeroDivisionError: print("Cannot...

    毕业设计论文-IT计算机-java进销存管理系统(jsp+mssql)-源码.zip

    设计模式如工厂模式用于创建数据库连接,单例模式保证数据库连接池的唯一性,提高系统性能。 六、安全性与优化 为保证系统安全,需考虑用户权限控制、数据加密传输(HTTPS)、防止XSS和CSRF攻击等方面。在性能优化...

    双鱼林vb.net图书管理系统精品demo.zip

    10. 设计模式的应用:可能采用了如单例模式(Singleton)来管理数据库连接,工厂模式(Factory)来创建对象,或者观察者模式(Observer)来实现事件驱动编程。 通过学习和分析《双鱼林vb.net图书管理系统精品demo》...

    ibatis2.3.4 jar包

    `ibatis-sqlmap-2.3.4.726.jar` 是Ibatis的核心组件,包含了SQL Map引擎、配置解析器、动态SQL生成器等关键模块。SQL Map是Ibatis的核心概念,它负责将Java对象映射到数据库中的记录,同时处理SQL查询和结果映射。在...

    Android 简约生活工具-IT计算机-毕业设计.zip

    在源码中,开发者可能创建了多个Activity和Fragment来实现不同的功能模块。 3. **布局设计**:Android应用的界面由XML文件定义,通常位于`res/layout`目录下。这些XML文件描述了用户界面元素如按钮、文本视图、图像...

    毕业设计论文-IT计算机-[信息办公]凯撒java版SaaS OA协同办公软件 v2.0_saas-oa-源码.zip

    8. **设计模式**:在开发过程中,开发者可能会运用各种设计模式,如工厂模式、单例模式、观察者模式等,以提高代码的复用性和可扩展性。 9. **测试**:单元测试和集成测试是确保代码质量的重要环节,JUnit和Mockito...

Global site tag (gtag.js) - Google Analytics