thinking
FunctionalJfunctional program 不是某些语言的专利,使用了这个库,我们也可以在java中进行方便的函数式编程了。实际上java设计之初忽略了函数也是对象,使我们只好在很简单的情况下也要使用Interface,使得代码过于复杂。另外也由于我们更习惯命令式编程。
使用java时如果注意interface、匿名类、不变类的使用,或充分应用反射(一个java发展),我们也可以进行函数式风格的编程。
例子很多 Google一下吧。
将球编号,先选8个球,天平两边各4个,如果平衡,则不一样的在剩余的4个中,比较简单,不再赘述。
如果天平不平衡,假设左边1,2,3,4比右边5,6,7,8重。首先可知9,10,11,12为标准球。将5,6,7换成9,10,11,然后将9,10,11和2,3,4交换位置,可能出现三种情况:
1。天平变平衡了,可以得知特殊球在5,6,7中,且特殊球比标准球轻。
2。天平仍然是左边重右边轻,可以得知特殊球是1或者是8。
3。天平变成了左边轻右边重,可以得知特殊球在2,3,4中,且特殊球比标准球重。
上面三种情况均可以在剩余的一次称量机会中找到那个特殊球,问题得解。
摘要:常用重构方法: (全文共1010字)——点击
此处阅读全文
面向对象设计时类有几种类型:值类、服务类、业务类、工具类
值类不言自明,所说的服务类指负责程序框架的那些类[比如Struts等等],业务类指真正系统要实现的业务功能的类、
工具类就是那些全是static函数的那些类。
主要进行建模和分析的应该是
业务类,即有一些行为的类是我们应当首先分析的。
封装性-面向对象方法的一个重要原则
1、把对象(类)的属性和服务结合在一起
2、尽可能的隐蔽对象的内部细节
3、值对象和工具类是误用
4、对有行为的类进行分析
5、反射、指针会破坏封装性
6、对象的创建(组装)和使用应该分开
7、多接口
多态性-与面向过程的核心区别
重写:子类中可以重新定义父类中已有的方法,从而体现出子类自己的行为
定义重写
Interface (java关键字)
Abstract (java关键字)
重载:同一个类中至少有两个方法用同一个名字,但有不同的参数
慎用重载(提供有意义的名称,参数类)
继承性-从继承到抽象
面向对象的基石
代码重用的基本方法(实现继承)
子类是对其父类的职责进行扩展,而非重写或废除
抽象的同义词
继承侧重于代码重用
抽象侧重于接口重用
GOF 设计模式(几乎全是接口继承)
一年多来,总是有一些支言片语想写下来与人分享,但又没有好的方式,突然想起blog,而且以前见过"竹笋炒肉"的blog,于是自己也申请一个,记录一些想法。(内容为空)
第1页,共1页