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

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;
}
// 比如,构成链表等数据结构
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值