【面向对象设计】-精通随笔-值对象和引用对象

值对象

  对象要区分值对象还是实体对象(引用对象),值对象的使用一般在每一次出现的地方都是新的实例,可以对比基本类型一样,每一个基本类型,都是在内存中唯一分配;实体对象,基本上多对一的时候都是只存在一个对象实例,这个没有什么异议;

  值对象应该有一个非常重要的特性,就是它是不可变的,所以如果值对象可变,那你还是选择引用对象为佳;

  值对象和引用对象在系统中有啥特点呢?----看下去

对象值和对象ID

  在对象体系中,Java的equals和 == ,Python的 ==和 is,都明确了对象的两个特性:值相等,和ID相等;这是面向对象程序设计语言对象的特性;所以,值对象在java中必须要重写equals和ha shcode方法,因为每一个值对象都必须是值相等的。

  上面提到对象均有对象值和对象id,值对象和引用对象在系统中表现为:

  引用对象:相等值的对象在系统中具有相同的对象ID(同一内存地址);

  值对象:相等值的对象在系统中,各自存在一个对象ID(不同的内存地址);

Change Value To Reference

  重构手法之一,把引用对象改为值对象。

问题空间

  面向对象最重要的,往往不是怎么封装,怎么继承和实现多态,而是抽象;一旦抽象错误就好比走错了方向,再怎么努力都白费,而纠正回来需要靠重构,成本会很大,所以推荐一开始就做正确的事;

  面向对象,就是分析问题空间,在问题空间中找模型,然后在计算中创建这种模型对应的类型;随着新类型的出现,计算机会以这些类型为核心,进行问题域模拟;

  简而言之:教计算机,读懂整个业务需求,再和外界进行交互,作出有限的智能反应;

 

转载于:https://www.cnblogs.com/iCanhua/p/11253615.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值