#单例模块,存在的意义就是在模块被载入类时,给类添加类方法和创建对象实例等
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实现的坦克大战游戏中,我们可以看到许多设计模式的巧妙应用,这使得代码更加模块化、可维护且易于扩展。 首先,"工厂模式"在游戏对象的创建中扮演了重要角色。游戏中的坦克、子弹、障碍物等都是游戏对象...
Guice是一个实现了依赖注入(Dependency Injection,简称DI)的Java库,它可以帮助开发者在不使用单例、工厂或者构造函数的情况下,轻松地创建和管理对象。在Android应用中,依赖注入可以帮助我们解耦组件,使得代码...
此外,为了提高代码的复用性和可维护性,常使用设计模式,如工厂模式、单例模式和策略模式等。 对于数据库部分,描述中提到的数据库可能是MySQL、Oracle或SQL Server等,需要正确配置JDBC驱动和连接参数。同时,...
7. **源代码结构**:一份完整的项目应该有清晰的源代码结构,包括主程序、网络通信模块、数据处理模块、用户界面模块等,各模块之间通过接口进行交互。 8. **开题报告**:开题报告会阐述研究背景、目的、意义、技术...
在创建型模式中,有五个主要模式:Prototype(原型模式)、Abstract Factory(抽象工厂模式)、Builder(建造者模式)、Singleton(单例模式)和Factory Method(工厂方法模式)。这些模式的共同目标是封装系统使用...
2. 单例模式:网络请求、数据库操作等需要全局共享的对象,通常采用单例模式来确保唯一实例,防止资源浪费。 3. 依赖注入:如使用Dagger或Koin进行依赖注入,减少代码耦合,提高组件复用性。 三、源码结构分析 一...
4. **设计模式**:可能应用了单例模式(Singleton)来确保捐赠管理系统的实例在整个程序中唯一,工厂模式(Factory)用于创建对象,或者观察者模式(Observer)用于实时更新用户界面的捐赠信息。 5. **事件驱动编程...
"pdd_2020-main"可能是该项目的主代码库或者主要模块。 在Java编程中,我们涉及的知识点广泛且深入。首先,Java是一种多平台、面向对象的编程语言,它的设计目标是具有良好的可移植性、健壮性和安全性。以下是几个...
- 设计模式:源码中可能包含各种设计模式,如单例模式、工厂模式等,有助于提升代码的可维护性和复用性。 - 用户体验:分析优秀源码的交互设计,能帮助开发者打造更符合用户习惯的界面和流程。 - 性能优化:学习...
另外,考虑到毕业设计可能涉及到论文撰写,源码中可能包含了模块化设计、设计模式的应用,比如单例模式、工厂模式等,以及如何利用版本控制工具如Git进行团队协作。 最后,为了确保应用的兼容性和性能,开发者需要...
第五,为了使代码更加模块化和可重用,开发者可能会创建自定义控件和类别(Category)。自定义控件可以封装复杂的视图逻辑,而类别则可以扩展已有的Foundation或UIKit类,增加新的功能。 最后,对于毕业设计而言,...
系统可能包含权限管理模块,以确保不同级别的用户访问相应的信息和服务。 3. **源码分析**:提供的源码包含了系统的核心组件和功能实现,这对于学习者来说是一份宝贵的教育资源。通过阅读和理解源码,可以深入理解...
assert singleton1 is singleton2 # 单例模式验证 ``` #### 五、异常处理 1. **基本异常处理**: - 使用`try...except`结构捕获异常。 ```python try: x = 1 / 0 except ZeroDivisionError: print("Cannot...
设计模式如工厂模式用于创建数据库连接,单例模式保证数据库连接池的唯一性,提高系统性能。 六、安全性与优化 为保证系统安全,需考虑用户权限控制、数据加密传输(HTTPS)、防止XSS和CSRF攻击等方面。在性能优化...
10. 设计模式的应用:可能采用了如单例模式(Singleton)来管理数据库连接,工厂模式(Factory)来创建对象,或者观察者模式(Observer)来实现事件驱动编程。 通过学习和分析《双鱼林vb.net图书管理系统精品demo》...
`ibatis-sqlmap-2.3.4.726.jar` 是Ibatis的核心组件,包含了SQL Map引擎、配置解析器、动态SQL生成器等关键模块。SQL Map是Ibatis的核心概念,它负责将Java对象映射到数据库中的记录,同时处理SQL查询和结果映射。在...
在源码中,开发者可能创建了多个Activity和Fragment来实现不同的功能模块。 3. **布局设计**:Android应用的界面由XML文件定义,通常位于`res/layout`目录下。这些XML文件描述了用户界面元素如按钮、文本视图、图像...
8. **设计模式**:在开发过程中,开发者可能会运用各种设计模式,如工厂模式、单例模式、观察者模式等,以提高代码的复用性和可扩展性。 9. **测试**:单元测试和集成测试是确保代码质量的重要环节,JUnit和Mockito...