`
qinysong
  • 浏览: 193733 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论
我的论坛
simohayha 写道而这句 sub2Pointer->processOnlyInSub2(); 相当于   processOnlyInSub2(sub2Pointer); 嗯,明白了,感谢指点 我又做了两个实验,一个是定义全局函数void processOnlyInSub2(Sub2*); 结果并没有和类Sub2的调用sub2Pointer->processOnlyInSub2() 产生冲突,所以Sub2的调用虽然编译成processOnlyInSub2(sub2Pointer),但是应该是做了名称(或空间)的特殊除了吧? 第二个是,如果我在父类中也定义一个多态的函 ...
发现原因了,原来sub2Pointer的值为空也可以调用,不象java那样会抛空指针异常 C++确实没有Java安全和不易出错
有这样一个类层次结构,Sub1和Sub2是Base的两个子类,在类Sub2中增加一个方法(注意这个方法在Base中和Sub1中都不存在),然后构造Sub1的一个对象,把这个对象的指针转到Sub2类型,调用这个指针的Sub2中新加的方法,居然可以执行 代码如下: class Base { public: virtual void processCommon(){} }; class Sub1: public Base { }; class Sub2: public Base { public: void processOnlyInSub2() { pr ...
除了依赖注入之外,静态方法也不支持接口和多态,所以在业务层也不易采用
xly_971223 写道重构和设计模式怕的就是为了重构而重构 为了模式而模式 凡事太刻意了 就会偏离了方向 我的体会是从TDD到重构,然后从重构中发现模式 直接用模式可能会出现过度设计等问题 为了模式而模式其实在过度设计中所占的比重并不大,过度设计大部分是为满足“对将来可能需求”的扩展性灵活性而预先设计的,之后这些可能需求并没有成为真正的需求,但是设计却保留下来了 所以“从TDD到重构,然后从重构中发现模式”固然是一个非常好的编码过程,可以最大限度避免过度设计,但是另一个相反的过程——利用重构去除不必要的预先设计模式,其实我觉得也是很好的,只要看预先设计及后来的重构不是非常困难。 所以过度 ...
在我的使用中分为三种情况: 第一种情况 是在工具类中将“除了参数外不需要其它数据的”工具方法——比如格式化方法、数值计算方法等作为静态方法,在工具类中一般都可以做成这样; 这种方式即便于使用,又节省创建对象的开销 第二种情况 是对于含有静态数据成员和与该静态数据成员相关的操作,在这种情况下,静态数据和操作都是类相关的 第三种情况 现在使用机会较少,就是获取类的单一实例的Singleton应用中
阳光晒晒 写道qinysong 写道这个帖子怎么被放到新手区来了,难道是大家都有很好的理解了吗?还是不屑一辩lz你题的太晚了 前年提正好但今年是ROR之年 不是ROR也得ajax 不是ajax也得是jsf 再再不行了也应该用struts2(webwork) 浮燥是流行.... 呵呵。。有道理
这个帖子怎么被放到新手区来了,难道是大家都有很好的理解了吗?还是不屑一辩
Lucas Lee 写道Struts可以说只是借用了MVC的思想和概念。 完全对等不太可能。 是的,我就是要说明这个问题
阳光晒晒 写道action+form = model form 只是对页面表单请求及显示数据的封装,在Struts中form还可以承担部分的数据校验逻辑,但在Spring中数据校验逻辑也被封装到了Validator中,所以form应该属于View
Global site tag (gtag.js) - Google Analytics