1.3.7 对象销毁
C++,程序员显式销毁对象,delete
java/C#,由虚拟机自动完成,garbage collection
析构方法通常用于清理非托管资源,文件系统、数据库连接、网络
建议,在开发中不要重写C#和Java的析构方法,应该让CLR/JVM负责
在C#中,非要显式回收资源,可以利用Disposable模式来解决这个问题(不用C#,此处略)
2.1.1 对象组合(对象关系中的一种)
1-to-1
方式一:A对象完全包含B对象,A创建B随之创建,A销毁B随之销毁(组合)
// 方式一,使用简单
class OneToOneClass{
private InnerClass obj;
public OneToOneClass(){
obj = new InnerClass();
}
}
方式二:A对象与B对象相互独立,A对象引用现成的B对象,A的声明周期与B无关(聚合)
// 方式二,采用对象注入
class OneToOneClass{
private InnerClass obj;
public OneToOneClass(InnerClass outerObj){
this.obj = outerObj;
}
}
1-to-N,实现起来把上述private InnerClass obj变成对象的集合
方式一:一辆车有4个轮子
方式二:一个飞机场有多架飞机
经验:活用对象组合,延时动态创建用户界面创建复杂的窗体(多个容器后台加载)
自引用类(对象组合的特殊形式)
// 用处:在没有指针的面向对象编程语言中,可以替代指针建立数据之间的关联
class MyClass{
MyClass obj;
}
// 比如,构成链表等数据结构