

Life for Idea – forever young
抖胆翻译一下scea study guide里的第一章的OO设计原则.纪录一下.
开闭原则
类应该被扩展,而不是被修改
Liskov替换原则
子类可以替换父类
依赖注入原则
依赖于抽象,而不是实现
接口分离原则
接口应该分开,避免单一通用的接口
合成重用原则
尽量用多态聚合代替继承
最少知识原则
操作知道尽可能少的当前类中的对象(自身,参数,类中的其他实例对象)
发布重用等效原则
细粒度的重用相当于细粒度的版本发布
包依赖:
共同关闭原则
一同变更的类应放在一起
公用重用原则
如果类不会一起被重用,就不应该放到一起.
非循环依赖原则
包之间不可以有循环依赖
依赖不变原则
依赖不应该经常变化
抽象不变原则
抽象包不应该经常变化
偶然的灵感, 能否以后编程就和写作文一样呢? 这也应该是面向对象的终极目标吧.下面这个是经常出现在教科书上的例子.
Person tom = new Person() - > tom is a Person
Dog trigger = new Dog() -> trigger is a Dog
List<Person> friends = new ArrayList<Person> - > Person have Person friends
Person implements Emotianal,HumanBehave -> Person behave Emotional and surely behave as a human.
interface Emotional{ sadly(); happily();} ->Emotional including sadly and happily doing things.
interface HumanBehave {cry();laugh();call(Person);} -> HumanBehave including cry and laugh and call somebody.
tom.cry().sadly() -> tom is crying sadly
tom.call(ann) -> tom is calling ann
如果以后将软件建模分为过程建模(process modeling)和对象建模(OO modeling),那么就更和谐了.让流程引擎来管理对象的生命周期以及提供上下文环境,对象只是一些功能性的个体.可能是因为最近了解了一些jBPM的东西.其实还应该有规则建模(也就是AOP主要解决的问题).过程,规则,对象这三者是否可以成为"三元素"而统一所有的软件建模领域呢?
有点不明白,为什么java不直接把void这种返回值省略掉,也就是如果没有东西返回就返回this.虽然只是一个很小地方,但真不觉得void有什么用.
例文:
A story about tom and ann (tom,ann,cruger=new Person...)
It's friday.Raining. (context, initialize , environment)
Tom goes to the cinema, buys a ticket and sit. (tom.goToCinima().buyTicket().sit())
Movie started.(environment changed)
Tom notices a pretty girl beside him.(tom.notice(ann))
Tom fell in love.(tom.fallInLove(ann))
Tom kissed the girl whose name is ann. (tom.kiss(ann))
Tom get kicked ass by cruger who is Ann ' boy friend'. (cruger.kickAss(tom))
The end. (process end)
哈哈