re: 关于接口隔离原则的一个实现: zxbyh 2009-11-26 21:17
一般来说接口是抽象层次上的,属于比较高层次的业务逻辑,在设计的时候尽量考虑不会发生变化.
比如说,你的主板上的内存插槽是DDR2的,你就只能上DDR2的内存,
如果要变成DDR3的接口,那只有考虑更换主板.
其实当发生这样的情况的时候,就是应当考虑"重构"了.
re: AJAX真的那么神奇吗?[未登录] zxbyh 2009-01-06 10:59
ajax神奇在于它的思想.不在技术
re: 开始学习struts2[未登录] zxbyh 2008-12-31 12:15
在电驴上搜 风中叶,struts2
这个视频讲的很不错饿!!
re: 郁闷的问题 Order by[未登录] zxbyh 2008-12-20 13:07
把哪个"-" replace成"",也就是去掉哪个-
order by replace(out_scrpno,"-","")
不知道你用的什么数据库,你根据的情况使用replace功能函数就是了
re: 一道智力题了解程序员团队[未登录] zxbyh 2008-12-13 11:22
我想到的是解方程,哈哈!!
然后突然发现,那些数学知识已经忘的差不多了
先弄清楚了IoC和Aop再去spring比较好!
还有和ejb相比,spring要轻量级一点。
这个国家不注重实业,这哈问题来了麻!!
公务员也不见得就好的很,地方政府还不是有拿不出钱的时候,
那些工厂倒闭,他在哪儿去收税哟
re: 求教:让人郁闷的时间问题[未登录] zxbyh 2008-12-02 00:12
实在是不明白,为什么不用存储过程或者视图!!
Spring是 实现IoC,AOP思想的一套东东。
对于演示原型,上午要下午给的快速交付
-----------------------------------------
这个还分什么MVC哟,
拿出当年Delphi,PB的那种开发模式
OO都不管了!!
因为 OO的最高原则 开闭原则在这儿不生效.
这个东东不得变动,没有修改,不可能扩展,因为下午就要拿去演示,演示完了,也就结束了.
最高原则是怎么做出来快当!!呵呵呵....
将那些观察者放到被观察者的一个聚集对象里面(List),
当然观察者需要满足同一接口(如果不满足,用适配器模式)
然后被观察者发生事情了,循环调用那个List的观察者对象的某一个方法就行了。
然后事件就更牛X一点,
直接把观察者的那些方法存起来(其实就是存的函数指针),被观察者只需要调用事件,就相当于循环执行了方法了。
哎呀!这个故事太长了!!
还是觉得那个张子阳举的烧开水的例子比较简单!
re: 关于工厂方法模式与开闭原则 zxbyh 2008-07-26 22:19
@LB
本文是在讨论 工厂模式与开闭原则.
并不是在讨论实际系统是否必须百分百满足开闭原则.
本人也认为,原则是死的,使用的人是灵活的..
还有一点,我举例的factory为每一个类型在建立具体的factory,
这个正是我要论证的论点:如果仅仅是在工厂方法里面写一个New,而且也不会发生变化.就没有使用工厂方法的意义了.
可以认为那是一个反例!!!
不用去研究这个!
使用饿汉单例模式就可以了.
<<java 与模式>>
re: 关于接口隔离原则的一个实现: zxbyh 2008-07-26 19:23
对,这儿可以配合工厂.
但是我讲这个的重点是怎样解决 隔离的问题,
我担心再拉进工厂,会冲淡主题了!!
re: 关于抽象类和接口的理解: [未登录] zxbyh 2008-07-24 14:03
看了以上两位的评论,觉得提出的意见很好,
但是我觉得既然也不是什么非脑筋的事情,何不在语法和应有的两个层面上都理解清楚啦.比较基础的东西,理解透彻点是好事情.
1.
抽象类使用的场合:
类的部分方法是确定的,而另外部分方法是不确定的,只有通过继承的子类去确定这部分方法,
但是子类可以使用抽象类的确定的方法(重用).
------------------------------------------------------
这句话的意思就是说抽象类主要是为了代码或算法的重用.
2.
那么何为接口啦:
就是说有一个类,所有的方法都是不确定的.
比如说 平面形状,总归有获取设置边长,面积这些方法吧,但是怎么去实现是不确定的.
----------------------------------------------------------
上面这一段话,需要改一下,就是说有一个类,所有的方法都是不确定的.但是必须要有这些方法.
换言之:接口是一种约定,是一种规范,你必须满足他,但是不关心你怎么实现.
个人还是觉得Java应该不允许override public成员变量.
直接让他编译不能通过还还好点...
脑袋想大了都想不出这样有何意义,既然是不规范的东西,何不尽早不让他发生.
就像C#那样,编译都通不过!!
困惑了半天,
然后看到这一篇文章顿时茅塞顿开:
http://www.sudu.cn/info/html/edu/jsp/20071109/102484.html
原来对象的成员变量在Java里面是允许override的.
但是成员变量是在编译的时候决定,但是方法是在运行时决定.
方法可以动态绑定,但是成员变量不可以动态绑定,如果要让成员变量实现动态绑定,那么就需要通过方法.
还是上面那段代码,在Main方法里面加上如下
FatherClass fc1 = new SunziClass();
fc1.f();
//加上下面的这一段话:
System.out.println(fc1.value);
System.out.println(((SunziClass)fc1).value);
运行结果是:
0
200
怪不得C#里面不允许Override成员变量
ChildClass cc = new SunziClass();
cc.ff();
----------
最后执行到Father类里面的
public void run(){
System.out.println("FatherClass.run():"+this.value);
}
这里面的this是引用的Sunzi对象,为什么this.value却是Father的默认value值0呢?
------------------------------------------------------------
这儿实际上在Sunzi类里面是覆盖了父类的Public int value 成员变量了,一般来说应该设置成一个Private 成员变量,然后写getter和setter来访问.
一般不推荐直接覆盖父类的Public 成员变量,这个在C#里面是编译不能通过的.
Java里面能通过,但是出现这样匪夷所思的结果. 我也不知道是怎么回事情了,
难道调用方法的this和调用成员变量的this不是一个??好像不可能啊??
那位高手帮忙解释一下啦??
re: PLSQL开发笔记和小结 zxbyh 2008-07-21 15:38
不错!!
re: 不要被牛粪糊住双眼 zxbyh 2008-07-21 15:18
有同感,
特别是Leader
最好忘掉自己是Leader