`
crazyox
  • 浏览: 182800 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表

理解OO

OO的特征: 封装:   封装是指隐藏对象的属性和实现细节.封装能为软件系统带来以下优点: 便于使用者正确的方便的理解和使用系统,防止使用者错误修改系统的属性。 有助于建立各个系统之间的松耦合关系,提高系统的独立性。当某一个系统的实现发生变化,只要它的接口不变,就不会影响到其他的系统。降低了构建大型系统的风险,即使整个系统不成功,个别的独立子系统有可能依然是有价值的。例如相机损坏了,它的干电池依然有用,可以安装到手电筒中。 提高软件的可重用性,每个系统都是一个相对独立的整体,可以在多种环境中得到重用。例如干电池就是一个可重用的独立系统,在相机、手电筒、电动剃须刀和玩 ...
ibatis比hibernate灵活,易学. ibatis对于处理复杂业务逻辑(需要写复杂的sql)和需求频繁变更,系统改造等问题时比hibernate更容易. Hibernate数据库无关性好,O/R映射能力强,如果你对Hibernate相当精通,那么你的项目整个持久层代码会相当简单,需要写的代码很少,开发速度很快. 虽然hibernate在功能上比Ibatis强大,但是,学习成本并不低,如果团队里没有一个hibernate高手,那么初次使用时将会花费很多时间去解决很多问题.    

sql总结

子查询: 表达式子查询  Select au_lname, au_fname from authors where city=  (select city from publishers where pub_name="abcde") 限定谓词子查询   Select pub_name from publishers from publishers  Where pub_id in  (select pub_id from titles where type='abcde') 相关查询  相关查询即嵌套查询依赖于外部父查询的值,嵌套查询要重复执行若干次。  Sele ...
数据库事务是指作为单个逻辑工作单元执行的一系列操作。 设想网上购物的一次交易,其付款过程至少包括以下几步数据库操作:   · 更新客户所购商品的库存信息   · 保存客户付款信息--可能包括与银行系统的交互 ...
RUP(Rational Unified Process)统一开发过程是一套面相对象的软件工程过程. 软件过程是指实施于软件开发和维护中的阶段, 方法, 技术, 实践和相关产物(计划,文档, 模型, 代码, 测试用例和手册等)的集合.有效的软件过程可以提高软件组 ...
转自:http://hi.baidu.com/liyunqi1984/blog/item/0128921373d98b015aaf53eb.html 1. strictfp 修饰类和方法,意思是FP-strict,精确浮点,符合IEEE-754规范的。当一个class或interface用strictfp声明,内部所有的float和double表达式都会成为strictfp的。Interface method不能被声明为strictfp的,class的可以。 Example: 代码 strictfp interface FPTest {         v ...
观察者模式又被称为依赖(Dependents)或发布-订阅模式(Publish-Subscribe). 意图:  定义对象间的一种一对多的依赖关系, 当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新. 问题: 当某个事件发生时,你需要相一系列对象发出通知, 而这个对象的列表是变化的. 实现:  让"希望知道某个事件何时发生"的对象(Observer)将自己注册到另一个"监视时间发生或自己触发事件"的对象(Subject)上.  当事件发生时, Subject 告诉 Observer "你关心的事件已经发生 ...
意图: 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作. 别名: Action , Transaction command 模式是回调机制的一个面向对象的替代品. 回调函数: 函数先在某处注册,而它将在稍后某个需要的时刻被调用. 命令模式使用一个Command对象来定义一个发送者和一个接收者之间的绑定关系,从而支持解耦.
Template Method是我们最常用的模式,也是最好理解的模式了. 意图:    定义一个操作中的算法的骨架,而将一些步骤延迟到子类中. Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 问题:    需要遵循一个过程或一系列步骤, 它们在某个具体层次上保持一致, 但单个步骤在更详细的层次上可能有不同的实现. 效果:    模板为代码复用提供了一个优秀的平台. 它们还有助于确保需要的步骤得到实现. 它们为每个具体类将重载后的步骤捆绑在一起, 因此只有在这些重载方法总是并且只能一起发生时, 才应该使用Template Method模式. 实现: ...
 意图:    动态地给一个对象添加一些额外的职责. 就增加功能来说, Decorator模式相比生成子类更为灵活. 问题:    你需要使用的对象执行你要求的基本功能. 但是, 你可能需要为这个对象添加某些功能, 这些附加功能可能发生在对象的基础功能之前或之后. 效果: 被添加的功能属于小的对象. 好处是可以在ConcreteComponent对象的功能之前或之后动态添加功能. 注意: 虽然一个装饰者可以在被装饰者之前或之后添加功能,但对象链总是以ConcteteComponent对象结束.  示例: 我们需要写一封信,但是有时候我想给这封信添加背景和边框效果,有时候只需要正文或边框或背景中的 ...
针对接口编程,而不是针对实现编程. 优先使用对象组合,而不是类继承. 考虑你的设计中哪些是可变的(不是考虑什么会迫使你的设计改变,而是考虑你想要什么变化而不会引起重新设计,用现有设计有效对付变化), 并封装变化的概念. 高内聚低耦合:高内聚的意思就是把逻辑上可以归在一起的东西放在一起。
问题: 我们真的无法断定新的需求将怎样变化. 如果我们试图发现事情将怎样变化,我们将永远停留在分析阶段. 如果我们试图边写我们的软件让它能添加新的功能,我们将永远停留在设计阶段. 我们的时间和预算不允许我们这样做. 意图: 让你可以使用不同的业务规则或算法. 解决方案: 将算法的选择和算法的实现相分离,让客户可以基于场景作出选择. 实现: 让使用算法的类(Context)包含一个抽象类(Strategy也可以不是抽象的),抽象类中有一个抽象方法指定如何调用算法,每个派生类实现自己的算法.  <v:shapetype id="_x0000_t75" stroked=&qu ...
意图:  将一个类的接口转换成客户希望的另外一个接口.Adapter模式使原本由于接口不兼容而不能在一起工作的那些类可以一起工作. 解释:我们需要一种方法,为一个内容合适但接口不匹配的对象创建一个新的接口.  效果:   Adapter模式让现存的对象适应新的类结构,而不受他们的接口限制. 实现:  创建一个拥有所需接口的新类,然后包装原来类的方法,从而有效地包容被适配的对象.
意图: 为了子系统中的一组接口提供一个一致的界面(访问方式),Facade模式定义了一个高层接口,这个接口使得这一子系统更加 容易使用. 场景:  我们(客户端)需要访问一个子系统,但是子系统中的功能很多,而我们只需要使用一部分功能,这时就可以使用Facade模式,创建一个或一组新的类(外观)提供需要的功能. 使用Facade前:  使用Facade后:     效果:  客户端直接和外观交互,降低了对子系统使用的复杂度, 降低了客户端与子系统间的耦合度,而且可以在外观中很容易监控对子系统的使用情况.但是,未被Facade中包含的子系统中的其他功能对于客户端是不可见的. 实现:  定义一个外 ...
 摘自: http://www.cndw.com/tech/xml/200205242727.asp 柴晓路 (fennivel@uddi-china.org) Chief System Architect 2001年8月17日 引言 在已经过去的近一年的时间中,为发展开放式的共享交互的电子商务而进行的应用工具和技术规范的开发工作开展地非常 ...
Global site tag (gtag.js) - Google Analytics