首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

设计注意的有关问题-《Java与模式》

2012-11-13 
设计注意的问题--《Java与模式》1:系统设计应该达到的目标1)可扩展性-Extensibility:新的性能可以很容易地加

设计注意的问题--《Java与模式》
1:系统设计应该达到的目标
   1)可扩展性-Extensibility:新的性能可以很容易地加入到系统中去。
   2)灵活性-Flexibility:可以允许代码修改平稳地发生,而不会波及到很多其他的模块,这
      就是灵活性
   3)可插入性-Pluggability:可以很容易地将一个类抽出去,同时将另外一个有同样接口的类
      加进来。
    做到这几点关键是恰当地提高软件的可维护性和可复用性。
    设计原则包括:
    1)“开-闭”原则 OCP
    2)里氏代换原则   LSP
    3)依赖倒转原则  DIP
    4)接口隔离原则  ISP
    5)组合/聚合复用原则 CARP
    6)迪米特法则  LoD

2:开-闭原则


达到这个目的的关键在于抽象化:在java里,可以给出一个或多个抽象java类或java接口,规定出所有的具体类必须提供的方法的特征(Signature)作为系统设计的抽象层。这个抽象层预见了所有的可能扩展,因此,再任何扩展情况下都不会改变。这就使得系统的抽象层不需要修改,从而满足了“开-闭”原则的第二条:对修改关闭。
同时,由于从抽象层导出一个或多个新的具体类可以改变系统的行为,因此系统的设计对扩展是开放的,这就满足了开闭原则的第一条。
对可变性的封装原则:



3:为什么使用接口



4:抽象类的使用
针对抽象编程
正确使用继承:包括接口继承和抽象继承
什么时候使用继承:



5:里氏代换原则



6:依赖倒转原则
在面向对象的系统里,两个类之间可以发生三种不同的耦合关系
1)零耦合:即两个类没有耦合关系
2)具体耦合:具体性耦合发生在两个具体的(可实例化的)类之间,经由一个类对另外一个具体类的直接引用造成。
3)抽象耦合关系:抽象耦合关系发生在一个具体类和一个抽象类(或接口)之间,使两个必须发生关系的类之间存有最大的灵活性。

依赖倒转原则要求客户端依赖于抽象耦合。它的表述是:抽象不应当依赖于细节;细节应当依赖于抽象。
另外一种表述是:要针对接口编程,不要针对实现编程。
针对接口编程的意思就是说,应当使用java接口和抽象java类进行变量的类型声明、参量的类型声明、方法的返回类型声明,以及数据类型的转换等。
不要针对实现编程的意思就是说,不应当使用具体java类进行变量的类型声明、参量的类型声明、方法的返回类型声明、以及数据类型的转换等。
要保证做到这一点,一个具体java类应当只实现java接口和抽象java类声明过得方法,而不应当给出多余的方法。
变量被声明时的类型叫做变量的静态类型,或明显类型;而变量所引用的对象的真实类型叫做变量的实际类型。如
List employees = new Vector();
//employees变量的静态类型是List,而它的实际类型是Vector
1)引用对象的抽象类型
   在很多情况下,一个java程序需要引用一个对象。这个时候,如果这个对象有一个抽象类型的话,应当使用这个抽象类型作为变量的静态类型。这就是针对接口编程的含义。
只要一个被引用的对象存在抽象类型,就应当在任何引用此对象的地方使用抽象类型,包括参量的类型声明、方法返回类型的声明、属性变量的类型声明等。
怎样做到依赖倒转原则:
   以抽象方式耦合是依赖倒转原则的关键。由于一个抽象耦合关系总要涉及具体类从抽象类继承,并且需要保证再任何引用到基类的地方都可以改换成其子类,因此,里氏代换原则是依赖倒转原则的基础。
   在抽象层次上的耦合虽然有灵活性,但也带来了额外的复杂性。在某些情况下,如果一个具体类发生变化的可能性非常小,那么抽象耦合能发挥的好处便十分有限,这时使用具体耦合反而会更好。

热点排行