【重点掌握】:设计模式定义、类关系、抽象封装具体、面向超类型编程
【重点掌握】:策略模式的参与角色、职责分配、协作及代码实现。
超类型就是抽象类或接口
1、接口
2、关联:类之间的联系,如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单,再如篮球队员与球队之间的关联
理解:关联(Association)关系是类与类之间的联接,它使一个类知道另一个类的属性和方法。关联可以是双向的,也可以是单向的。在Java语言中,关联关系一般使用成员变量来实现。
关联分为组合和聚合
Public class A {
Private B b;//从这行代码显示A关联B,但不能决定是组合还是聚合关系,
}
2.1组合:整体与部分间的关系,不可分的,比如人和人的大脑,比聚合关系强的关系。
public class Head
{
private Mouth mouth;
public Head()
{
mouth = new Mouth();//类Head对象创建时Mouth对象也创建了
}
}
public class Mouth
{
}
2.2聚合:整体与部分之间是可分离的,比如计算机与CPU、公司与员工的关系等,与关联关系一样,聚合关系也是通过实例变量实现的。但是关联关系所涉及的两个类是处在同一层次上的,而在聚合关系中,两个类是处在不平等层次上的,一个代表整体,另一个代表部分。
Public class A {
Private B b; //注意这有定义类B在类A中的私有变量
Public set(B b){
This.b=b;}
}
//从这行代码显示A类对象创建时,B类对象没有创建,类比组装主板A和其上的网卡B,两者可以分拆,换一个新的网卡。
Main(){
A a = new A();
a.set(new B());
}
3.依赖:以类A依赖类B为例,表示类B出现在类A的一个方法中的参数中、方法体局部变量、或静态B方法调用、返回值。
理解:依赖(Dependency)关系是类与类之间的联接。依赖关系表示一个类依赖于另一个类的定义。例如,一个人(Person)可以买车(car)和房子(House),Person类依赖于Car类和House类的定义,因为Person类引用了Car和House。与关联不同的是,Person类里并没有Car和House类型的属性,Car和House的实例是以参量的方式传入到buy()方法中去的。一般而言,依赖关系在Java语言中体现为局域变量、方法的形参,或者对静态方法的调用。
public class Driver {
public void drive(Car car) {
car.move();
}
}
public class Car {
public void move() {
}
}
4. 泛化关系(Generalization)也就是继承关系
1、子类与父类应该完全一致,父类所具有的属性、操作,子类应该都有;
2、子类中除了与父类一致的信息以外,还包括额外的信息;
3、可以使用父类的实例的地方,也可以使用子类的实例;
网友评论