随机对象生成可以说是随机数生成的一个延伸,在实际使用中,我们可能要生成的不是一个简简单单的数字,而是像数字、大小写字符、中文汉字、算数表达式等。
由于其实现相对简单,取各种随机对象的源码网上也比比皆是,因而貌似也没人做一个通用的、可扩展的随机对象生成。
博主要不是因为闲得蛋疼也是不会想到做这个东西的,好了,言归正传。分析随机对象生成,其要点无外乎三点:
1. 设置随机对象集;
2. 获取一个或多个随机对象;
3. 获取一个或多个不重复随机对象;
在这三点中,后两者算法皆固定,仅设置对象集不同,故而完全可以使用模板模式。
就第一点而言,设置随机对象集,我们一般的想法是创建一个集合(数组、List。。)保存所有对象。但我并为采用该方法。具体原因如下:
1. 元素个数可能非常;
2. 元素的获取可能是通过一个算法动态获取,执行之前并不知道具体有哪些元素,或者不想枚举;
3. 设置一个集合,这是已经是一个具体的实现了,模板并不需要知道这些,模板只需要定义一个方法--通过一个索引去获取对应的元素。像下面的代码一样:
/// <summary> /// 根据实际索引获取对象 /// </summary> /// <param name="realIndex"></param> /// <returns></returns> protected abstract T ElementAt(int realIndex);
时间: 2024-10-25 14:54:45