这些天在学习设计模式,敲了一些代码,分享记录下来嘻嘻。
1、继承
如果一个类别A“继承自”另一个类别B,就把这个A称为“B的子类别”,而把B称为“A的父类别”也可以称“B是A的超类”。继承可以使得子类别具有父类别的各种属性和方法,而不需要再次编写相同的代码。
类图如下:
2、实现(接口)
实现(interface)和继承相似,里面含有抽象的方法或者常量字段,一个类如果实现了某个接口,则必须要实现里面的抽象方法。
如果没有实现,则必须要将该类声明为抽象类。通过实现接口,可以完成类似于c++中多继承的功能,但不是多继承。
类图如下:
3、关联(association)
关联就是一个类A里面会用到另一个类B,但是不是用到这个类B的多个,就只有一个,例如有一个类企鹅,需要了解到气候规律,
当一个类要“知道另一个类”是,可以用关联。
代码示例:
public class Penguin{
private Climate climate;
}
4、聚合(aggregation)
聚合表示一种弱的“拥有”关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分,就像一个类A里面有多个类B的意思。
类图如下:
代码示例:
public class WideGooseAggregate{
private WideGoose[] arrayWideGoose;
}
5、组合(composition)
组合表示一种强的拥有关系,体现了严格的部分和整体的关系,部分和真题的生命周期是一样的。这个和前一个的“关联”有区别,关联
是有“通知”的意思,而组合强调的是部分和整体,强调生命周期。
代码示例:
public class Bird{
private Wing wing;
public Bird(){
wing = new Wing();
}
}
6、依赖关系(dependency)
举个例子吧,动物依赖于氧气和水,他们之间就是的依赖关系。
代码示例:
public abstract class PictureTest {
public Metabolism(Oxygen oxygen, Water water){
}
}
赠人玫瑰手留余香
有错误提出来一起学习哈啊