我想在Ruby(1.9)中实现类文件类,但不想重新实现或装饰StringIO和IO类提供的每个方法。我可以提供一个模块来帮助我吗?我想提供一个read()
方法并获得readLines()
方法(然后使用read()
)免费。
这与Comparable模块添加运算符<
,<=
,==
,>=
和>
的方式类似{{ 1}}已经实施。我为文件寻找类似的东西。
如果我没记错的话,Java和/或Apache Commons的工作方式如下:基本上只有一两种方法,其他所有方法都用它们进行读/写。
我正在为可写的File和StringIO对象实现一个包装器,它可以在每次写入时透明地更新SHA256摘要。
答案 0 :(得分:2)
如果您不想从IO继承,那么您可能希望使用内核中的方法,尤其是open,gets
及其readline
的实现或readlines
。
你丢弃了许多已经调试过的预先编写的代码。就个人而言,我会将IO子类化并将“读取”和“写入”类型的例程别名为某个安全名称,然后通过调用原始函数创建执行写入的新版本,然后更新SHA256。
答案 1 :(得分:2)
正如您已经说过要实现“包装类”,我建议使用Decorator Pattern。
Ruby允许您通过多种方式实现它,它很简单,并且可以准确地提供您想要的内容:例如,如果使用method_missing
实现模式,则只需实现摘要计算所需的写入方法。在实现中,将write委托给装饰对象,并使用写入的String更新SHA256 Digest实例。