java与模式学习
iteye_14876
这个作者很懒,什么都没留下…
展开
-
开闭原则(OCP)
ocp 一个软件实体应当对扩展开放,对修改关闭。ocp从另外一个角度讲,就是对可变性的封装原则1.一种可变性不应当散落在代码的各个角落,而应当被封装在一个对象里面。同一种可变性的的不同表象意味着同一个继承等级结构中的具体子类。继承应当被看做是封装变化的方法,而不应当被认为是从一般的对象生成特殊对象的方法。2.一种可变性不应当与另一种可变性混合在一起。...2008-08-06 08:48:33 · 85 阅读 · 0 评论 -
java中的接口
在java语言规范中,一个方法的特征仅包括方法的名字、参量的数目和种类,而不包括方法的返回类型、参量的名字以及所抛出的异常。在java编译器检查方法的重载(overload)时,会根据这些条件判断两个方法是否是重载方法。但是在java编译器检查方法的置换(override)时,则会进一步检查两个方法(分处超类型和子类型)的返回类型和抛出的异常是否相同。接口和类最重要的区别是:接口仅仅描述方法的特征...2008-08-06 08:49:53 · 70 阅读 · 0 评论 -
抽象类
抽象类应当拥有尽可能多的共同代码和尽可能少的数据。子类应当扩展超类的责任,而不是置换掉(override)或撤销掉(nullilfy)超类的责任。不要从工具类继承。什么时候应当使用继承复用,只有当以下的Coad条件全部被满足时,才应当使用继承关系:(1).子类是超类的一个特殊种类,而不是超类的一个角色,也就是要区分Has-A与Is-A两种关系的不同。Has-A关系应当使用聚合关系描述,而只有Is-...2008-08-06 08:50:16 · 65 阅读 · 0 评论 -
角色隔离(ISP)
一个接口应当简单的代表一个角色,而不是多个角色,如果系统涉及到多个角色的话,那么每个角色都应当由一个特定的接口代表。2008-08-06 08:50:41 · 127 阅读 · 0 评论 -
里氏替换原则(LSP)和合成/聚合复用原则(CARP)
里氏替换原则(LSP) LSP是继承复用的基石。只有当衍生类可以替换掉基类,软件单位的功能不会受到影响时,基类才能真正被复用,而衍生类也才能在基类的基础上增加新的行为。 里氏替换原则讲的是基类和子类的关系。只有当这种关系存在时,里氏代换关系才存在,反之则不存在。如果两个基本类A和B之间的关系违反了里氏代换原则的设计,则有两种重构方案: 1.创建一个新的抽象类C,作为两个具体类的超类,将A和B...2008-08-07 09:05:38 · 557 阅读 · 0 评论 -
依赖倒转原则(DIP)
依赖倒转原则讲的是:要依赖于抽象,不要依赖于具体。 依赖倒转原则的一种表述是:细节应当依赖与抽象,抽象不应当依赖于细节。 另一种描述是:要针对接口编程,不要针对实现编程。意思就是应当使用接口和抽象类而不是具体类进行变量的类型声明、参数的类型声明、方法的返回类型声明以及数据类型的转换等。要保证这一点,一个具体java类应当只实现java接口和抽象java类中声明过的方法,...2008-08-11 13:25:35 · 109 阅读 · 0 评论 -
迪米特法则(LoD)
一个对象应当对其他对象有尽可能少的了解。 如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中的一个类需要调用另外一个类的某一个方法的话,可以通过第三者转发这个调用。 朋友圈的确定: 以下的条件成为朋友条件: 1.当前对象本身(this) 2.以参量形式传入到当前对象方法中的对象 3.当前对象的实例变量直接引用的对象 4.当前对象的实例变量如果是,那么聚集中的...2008-08-11 13:26:04 · 170 阅读 · 0 评论 -
简单工厂模式
创建模式是对类的实例化过程的抽象化。 创建模式分为类的创建模式和对象的创建模式两种。 类的创建模式使用继承关系,把类的创建延迟到子类,从而封装了客户端将得到哪些具体类的信息,并且隐藏了这些类的实例是如何被创建和放在一起的。 对象的创建模式则把对象的创建过程动态地委派给另一个对象,从而动态的决定客户端将得到哪些具体类的实例,以及这些类的实例是如何被创建和组合在一起的。 简单工厂模式是由一个工...2008-08-11 13:26:49 · 70 阅读 · 0 评论