Resource Releases Resource 资源释放.

原文地址: http://www.c2.com/cgi/wiki?ResourceReleasesResource

随记:网站上第二小节的Architectural idioms:里面文章都有些太长,也许是很重要,参与的人比较多,不过还是等空闲点再翻翻.

文章第一段描述的是..一种比较早的解决资源回收问题的处理接口,特别可以用于管理比较宝贵的资源时候进行使用.

优点如下:
1:它是可重用和抽象的
2:提供对所有资源文件统一的管理 //并不准确..大概这个意思
3:他没有对多少客户端运行访问限制

这里有一个快速写下的抽象类
public abstract class AbstractResource
 {
  abstract protected begin(ResourceClient client, Object object);
  abstract protected end(ResourceClient client, Object object);

  public void consume(ResourceClient client, Object object)
	{
	begin(client, object);
	try {
	client.consume(this, object);
	} finally {
	end(client, object);
	}
	}
 }

 public interface ResourceClient
 {
  abstract public void consume(
	AbstractResource resource,
	Object object
	);
 }


批注:这里使用特别的抽象接口,组合对类回收格式和调用格式的约定,很好的封装了对资源文件调用以及回收的格式,方便重用与统一调用

如果一个对象需要使用一个资源超出了一个方法的调用..可以参考 AbstractSessionPattern http://www-dse.doc.ic.ac.uk/~np2/patterns

在系统的一些地方,经常或者一直出现一个对象使用一个方法拥有对资源文件的调用,在那对象之上使用.当它的方法结束,回收那资源.

甚至在事件驱动的环境,经常使用一些状态,一些地方,那相当于真正的对象,这个方法也许看起来如:
[self finished] whileFalse: [self waitSeconds: 30]

在这个期间,所有的其他对象和资源受到该对象的控制.
批注: 么有看懂这个代码...意思也比较模糊的理解


后半段..明天翻译

你可能感兴趣的:(cgi)