面向对象:Close的问题

通常我们需要open一个东西,这个东西用完了,就需要Close。这样才符合真正的逻辑世界。有开必有关嘛。

但人有惰性,经常写着写着就忘了close了。 另外一个,老是写一个close,每一样东西都要写close,多么的麻烦。有时候,为了给下面的类添加close,于是设计了IClosable这个接口,于是所有继承它的类,都必须实现close方法了。

假如A,B,C都实现了IClosable,于是我们将他们放到集合中一起管理。 于是CloseManager,这里面维护一个IClosable的列表,然后遍历,把每个都关了。

你会发现,写个东西,有时候真麻烦的,你要增加IClosable接口,你发现要增加很多东西。

于是,一种懒人方法是,像C#那样,采用using的方式,这样编译器编译的时候自动帮你增加一行代码,这行代码负责帮你close。

                System.Net.WebRequest wReq = System.Net.WebRequest.Create(Url);
                 // Get the response instance.
                System.Net.WebResponse wResp = wReq.GetResponse();
                 System.IO.Stream respStream = wResp.GetResponseStream();
                 // Dim reader As StreamReader = New StreamReader(respStream)
                using (System.IO.StreamReader reader = new System.IO.StreamReader(respStream, Encoding.GetEncoding(type)))
                {
                    return reader.ReadToEnd();
                }

在Java中,也提供类似手段,就是try(xxxx)的时候呢,会帮你close。

这种手段需要编译器来提供支持。 编译器很好。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值