vlambda博客
学习文章列表

设计模式-基本概念及UML图

Java面向对象部分特性

抽象类和接口

  • 抽象类可以有抽象方法也可以有非抽象方法

  • 抽象类不能用new运算符创建

  • 如果非抽象类继承了某个抽象类,那么必须实现里面所有的非抽象方法

  • 抽象类声明的对象可以成为其子类向上转型的对象

  • 接口中可以有public或者default类型的抽象方法,不可以有非abstract方法

  • 如果一个类实现了一个接口,那么必须重写里面所有的abstract方法或者声明为abstract类

  • 接口回调:可以把实现接口的类的对象的引用赋值给该接口声明的接口变量中

面向对象的几个基本原则

开闭原则

  • 设计对扩展开放,对修改关闭

  • 对abstract类的修改关闭,对abstract子类的扩展开放

多用组合少用继承

  • 继承与复用

继承的优点是子类可以重写父类的方法,易于修改和扩展;

缺点是子类在编译时就确定下来,无法在运行期间改变从父类继承的方法和行为;子类和父类是强耦合关系,当父类方法的行为发生改变时,必然导致子类的方法发生改变;"白盒"复用,即父类的内部细节对子类是可见的

  • 组合与复用

优点是:"黑盒"复用使得当前对象所包含对象方法的细节对当前对象不可见;对象与所包含的对象属于弱耦合关系,修改当前对象所包含的类的代码,不必修改当前类的代码;当前对象可以在运行时动态指定所包含的对象;

缺点是:容易导致系统中的对象过多,为了能组合多个对象,必须仔细地对接口进行定义

  • 高内聚-低耦合

如果类中的方法是一组相关的行为,那么该类是高内聚的;

低耦合是尽量不要让一个类还有太多其他类的实例引用

迪米特法则

如果两个类不必直接通信,那么这两个类不应当发生直接的相互作用,如果其中一个类需要调用另一个类的话可以引入第三个类解决

UML类图

类图:+表示public #表示protected -表示private

类图

接口:

设计模式-基本概念及UML图

接口

泛化关系

泛化关系就是指类的继承关系,父类用空心三角形表示

设计模式-基本概念及UML图

泛化关系

关联关系

如果A类中的成员变量是用B类(接口)来声明的变量,那么A和B是关联关系,被关联的关系用黑色箭头指向或者没有指向

设计模式-基本概念及UML图

关联关系

依赖关系

A类中某个方法的参数是用B类来声明的变量或者某个方法返回的数据类型是B类型的,那么A和B属于依赖关系,A依赖于B
有时候A关联于B也成A依赖于B,使用虚线连接的箭头表示

设计模式-基本概念及UML图

依赖关系

实现关系

如果一个类实现了另一个类的接口,那么类和接口属于实现关系,称类实现了接口

实现关系