软件设计笔记(六)- 面向对象程序设计 - 4

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_30159243/article/details/79978866

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;
}
// 比如,构成链表等数据结构
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页