腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
明丰随笔
专栏成员
举报
61
文章
51811
阅读量
14
订阅数
订阅专栏
申请加入专栏
全部文章(61)
编程算法(24)
.net(12)
文件存储(6)
面向对象编程(6)
windows(4)
数据库(3)
sql(3)
打包(3)
ide(3)
aop(3)
tcp/ip(3)
iis(3)
java(2)
javascript(2)
c#(2)
asp.net(2)
网站(2)
http(2)
网络安全(2)
https(2)
private(2)
public(2)
system(2)
c++(1)
python(1)
erlang(1)
node.js(1)
xml(1)
ajax(1)
mvc(1)
web.py(1)
git(1)
api(1)
linux(1)
apache(1)
神经网络(1)
日志服务(1)
命令行工具(1)
消息队列 CMQ 版(1)
企业邮箱(1)
腾讯云测试服务(1)
存储(1)
缓存(1)
hive(1)
unity(1)
rpc(1)
rabbitmq(1)
powershell(1)
大数据(1)
数据分析(1)
kafka(1)
任务调度(1)
action(1)
attributes(1)
dll(1)
live(1)
memorystream(1)
path(1)
service(1)
static(1)
wcf(1)
反射(1)
搜索文章
搜索
搜索
关闭
迭代器模式
python
c#
.net
javascript
在面向对象编程里,迭代器模式是一种最简单也最常见的设计模式。它可以让用户透过特定的接口访问集合中的每一个元素而不用了解底层的实现。一般实现一个集合的方法有:数组,链表,哈希表等等,每种集合因为底层实现不同,遍历集合的方法也不同。对于数组或者列表,用户需要在对集合了解很清楚的前提下,可以自行遍历对象,但是对于hash表来说,用户遍历起来就比较麻烦,而且暴露了集合类的内部表示给用户,数据也会不安全。而引入了迭代器方法后,用户用起来就简单的多了,并且更加安全。迭代器模式在客户访问类与集合类之间插入一个迭代器,这分离了聚合对象与其遍历行为,对客户也隐藏了其内部细节,且满足“单一职责原则”和“开闭原则”。所以,如果我们对各种集合的都实现了迭代器接口,就可以使存储数据和遍历数据的职责分离,并且让外部代码可以透明并统一地访问集合内部的数据,简化了遍历方式,还提供了良好的封装性,用户只需要得到迭代器就可以遍历,而对于遍历算法则不用关心。
小蜜蜂
2019-07-14
641
0
浅谈泛型
ide
打包
c#
我们在写一些通用库的时候,经常需要写一个算法,比如交换,搜索,比较,排序,转换等算法,但是需要支持int,string等多种类型。通常我们可能会把代码复制多遍分别处理不同类型的数据。有没有一种办法,让我们只写一遍算法的实现,就可以支持所有类型的数据?泛型(generic)是C#提供的一种机制,它可以提供这种形式的代码重用,即“算法重用”。简单来说,开发人员在定义算法的时候并不设定算法操作的数据类型,而是在使用这个算法的时候再指定具体的数据类型。大多数算法都封装在一个类型中,CLR允许创建泛型引用类型和泛型值类型,以及泛型接口和泛型委托。所以CLR允许在类或接口中定义泛型方法。来看一个简单例子,Framework类库定义了一个泛型列表算法,它知道如何管理对象集合。泛型算法没有设定数据的类型。要在使用这个泛型列表算法时指定具体的数据类型。封装了泛型列表算法的FCL类称为List<T>。这个类是System.Collections.Generic命名空间中定义的。下面展示了类的定义:
小蜜蜂
2019-07-14
1K
0
没有更多了
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
立即查看
Python精品学习库
代码在线跑,知识轻松学
立即查看
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
立即体验
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
立即查看
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档