java与模式笔记(4) 抽象类相关

  无论是先有鸡还是先有蛋,在抽象程序系统中,我们都认为是先有的蛋再有的鸡。蛋是鸡的原型是鸡的超类。 

  我们在程序设计的时候要随时都要有根弦,要记住,具体类不是用来继承的。我们可以使用重构的方法来把这个关系解决掉。我们可以设计一个它们的超类,然后让他们都继承那么超类。

  然而这时候我们又有了一个要求,为了实现开闭原则,我们要尽量使得抽象类,应该具有更多的共同的代码,使得子类的重用更加深化。然而又要求抽象类拥有更少的数据,因为一个具体的类,无论是是否使用它的变量,都会在内存中使用空间,这样就没有必要让抽象类拥有更多的数据。

  针对抽象编程,而不是针对具体编程。针对接口编程,而不是针对实现编程。

  继承使用的Coad原则:
1)has a 与is a, has a 要用聚合或者组合来处理。
2)永远不要将一个子类替换另外一个子类的情况。如果不清楚当前的子类会不会在某时替换另外一个子类时,就不要将这个类设为这个超类的子类。
3)子类是拓展的责任,并不是,替换或者取消父类的接口的责任,如果发生这个,那么这个子类就不因该设另外一个类为超类。
4)工具类一般不具备与业务逻辑有分类学的关系,然而继承只建立在分类学的关系之上,也就是不要从工具类上继承。

  Coad原则是里氏代换原则的衍生,里氏代换原则是是否使用继承的根本原则。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值