首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Java > Modern C++ Design, Spring Framework和Ruby的Minxin....
【标  题】:Modern C++ Design, Spring Framework和Ruby的Minxin....
【关键字】:Modern,C++,Design,Spring,Framework,Ruby,Minxin....
【来  源】:http://www.blogjava.net/calvin/archive/2005/11/01/17678.html

Modern C++ Design, Spring Framework和Ruby的Minxin....

《Modern C++ Design》里的Policy-Base Class是Cpper得意的一样事情;
  Spring 式IoC container 的依赖注入是Javaer得意的一样事情;
  Ruby的Mixin特性是Rubyer得意的一样事情。

  有趣的是,各自得意的事情,指向的是同一个问题:多重行为的组合。

   1 .Policy-Base是混合使用模板与C++的多重继承达成的:
      最终类多重继承模版类,由模版传入实际的行为类(Policy Class)。
template <class CheckingPolicy>
class SmartPtr : public CheckingPolicy
{...};

typedef SmartPtr
<NoChecking> noCheckPtr;

    上段代码,在编译期把NoChecking类传入到SmartPtr中,组合成noCheckPtr类。而实战中,还会用到"template template parameter"....

   2 .Java则紧守最古老的委托模式来达成:
     最终类拥有实际施行各种行为的行为类的指针。所有最终类的方法都将委托给行为类来执行。如果行为多样时,采用基于接口编程。同时利用Java的反射特质,用IOC Container根据配置实现注入的自动化。

   3. Ruby则倚仗自己的动态特性,直接在语言中内建了Mixin特性。
      
module Greetable
   def greet
     puts 
"Your age is, " + self.age
   end
end

class Person
   include Greetable
   def initialize(name, age)
     @name
=name
     @age
=age
   end
   attr_reader :age
end

person
=Person.new("Bruce",40)
person.greet

Your age is 
40.

此段代码将Greetable类Minxin进了Person类里头,让其拥有了greet方法。
也多亏了Ruby的动态性,让Greetable可以打印一个自身毫不知情的,其实属于Person的属性age.

就因为同一样事情还有着C++模板、传统Delegate和新兴动态Minxin的选择,让我们这些工蚁,还觉得有些许的自由和左顾右盼的乐趣。
程序员成长最快的环境:【上一篇】
Java下的框架编程(2)-对泛型的无聊用法和为擦拭法站台:【下一篇】
【相关文章】
  • Castle与Spring.Net在用法和配置上的区别
  • 谁知道c++中的char ** 在C#中一般用什么类型
  • 基于浏览器的Plamspring景区的ERDAS三维景观网络发布
  • Does C/C++ provide something like "event".
  • C++热点问题一席谈(上)
  • eclipse c++的配置
  • c++ primer 笔记(动态内存分配和指针)
  • BUG: The Submit button on ASP.NET pages does not work after you install the .NET Framework 1.1 Servi...
  • 提醒各位! 安装了.Net Framework 1.1 SP1 后的问题!!
  • 如何检验计算机已经安装了.Net FrameWork
  • 【随机文章】
  • USB Video Class及其实现
  • abap progress indicator实用实例
  • uClinux 下如何写framebuffer 设备驱动
  • vsftp下用户允许可传、下文件,但不能删
  • [原创]国内大部分的USBKey通过B/S方式(CAPICOM)产生数字签名的严重安全漏洞
  • Beginning Learn Python
  • How-To Develop EJB 3.0 to Supports Backward Compatibility with EJB 2.x Clients
  • Device Drivers (file system)3
  • FreeBSD MRTG-RAM+SWAP
  • Flash MX 2004精彩特效
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.