The Programming Language Tips[4]

[入库:2005年8月19日] [更新:2007年3月24日]

本文简介:选择自 chelsea 的 blog

我推荐的解决方法

1,首选语言提供的功能

2,次选类库提供的功能

3,自己包装代理类,或返回深度拷贝,或使用aop

[c++]

class config

{

public:

     const list<string> & get_attributes(){

         return attrs;

     }

private:

     list<string> attrs;

};

[c#]

     public class someclass {

         private ilist attrs;

         public ilist getattributes(){

              return arraylist.readonly(attrs);

         }

     }

[java]

     public class someclass {

         private list attrs;

         public list getattributes(){

              return collections.unmodifiablelist(attrs);

         }

     }

效果

1,语言提供的功能可帮助在编译期进行检查,确保程序中连试图增删元素的代码都不存在;但对有意无意的const转型无能为力

2,类库提供的功能可帮助在运行期进行检查,确保程序中试图增删元素的操作都抛出异常


同步代理

问题

为了对象的线程安全引入了同步机制,却使对象在单线程环境下付出了不必要的性能上的代价,曾经的例子如写时拷贝cow

我见过的解决方法

就是视而不见,不做任何处理,使用同步原语

[c#]

     public class someclass {

         [methodimplattribute(methodimploptions.synchronized)]

         public void add(string name){

              attrs.add(name);

         }

     }

[java]

     public class someclass {

         public synchronized void add(string name){

              attrs.add(name);

         }

     }

 

本文关键:The Programming Language Tips
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top