咸蛋系列一●《模板模式构建随机对象生成》2 构思

随机对象生成可以说是随机数生成的一个延伸,在实际使用中,我们可能要生成的不是一个简简单单的数字,而是像数字、大小写字符、中文汉字、算数表达式等。

由于其实现相对简单,取各种随机对象的源码网上也比比皆是,因而貌似也没人做一个通用的、可扩展的随机对象生成。

博主要不是因为闲得蛋疼也是不会想到做这个东西的,好了,言归正传。分析随机对象生成,其要点无外乎三点:

1. 设置随机对象集;

2. 获取一个或多个随机对象;

3. 获取一个或多个不重复随机对象;

在这三点中,后两者算法皆固定,仅设置对象集不同,故而完全可以使用模板模式。

就第一点而言,设置随机对象集,我们一般的想法是创建一个集合(数组、List。。)保存所有对象。但我并为采用该方法。具体原因如下:

1. 元素个数可能非常;

2. 元素的获取可能是通过一个算法动态获取,执行之前并不知道具体有哪些元素,或者不想枚举;

3. 设置一个集合,这是已经是一个具体的实现了,模板并不需要知道这些,模板只需要定义一个方法--通过一个索引去获取对应的元素。像下面的代码一样:

/// <summary>
/// 根据实际索引获取对象
/// </summary>
/// <param name="realIndex"></param>
/// <returns></returns>
protected abstract T ElementAt(int realIndex);

 

posted @ 2015-06-09 23:37  模拟人生  阅读(157)  评论(0编辑  收藏  举报