设计模式-组合优于继承原则

本章用来讲述设计模式中的另一个原则——组合优于继承原则,又称为合成复用原则。

一、基本介绍

该原则是尽量使用合成/聚合的方式,而不是使用继承。

上面一句话就是对该原则的核心,但单单看这么一句话还是显得过于枯燥与不知所云,下面我们还是结合具体的场景进行代码推进,对该原则进行讲解。

二、场景

假设我们需要设计这样一个集合,每次向里面加入元素时,count都加一。例如:

最初集合是空集合,此时我们向里面加入"a",此时集合为{"a"},那么此时count = 1;当加入"b","c"两个元素时,集合为{"a","b","c"},此时count=3;此时再删除"a","c"两个元素,集合为{"b"},count仍然等于3;最后再加入"d",集合为{"b","d"}count=4

所以该场景是,不论中间是否删除元素,我们只统计加入到集合中的元素的次数,进行返回。

三、代码演进

根据上面的场景,我们开始一步步编写代码。

3.1 代码一
public class MySet01<E> extends  HashSet<E>{
   

    private int count = 0;

    @Override
    public boolean add(E e) {
   
        ++count;
        return super.add(e);
    }

    @Override
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
多用组合少用继承的设计思想是一种常见的设计原则,也被称为组合优于继承(Composition over Inheritance)原则。它建议在设计类和对象之间的关系时,更多地使用组合而不是继承。 使用组合意味着将功能从一个类提取出来,并将其作为另一个类的成员进行组合。这样做可以避免继承链的复杂性和耦合度的增加,同时也提供了更大的灵活性和可维护性。下面是一些使用组合而不是继承的好处: 1. 松耦合性:组合减少了类之间的依赖关系,使得系统更加灵活和可扩展。如果使用继承,子类与父类之间的耦合度会增加,当父类发生改变时,子类也需要相应地进行修改。 2. 更好的代码复用:通过将功能封装为独立的类,可以更方便地在不同的类中进行复用。这样可以避免重复编写相似的代码,并且更容易调整和修改功能。 3. 更好的可维护性:使用组合可以将系统分解为更小、更简单的部分,每个部分都可以独立地进行修改和测试。这样可以提高代码的可读性和可维护性,减少出错的可能性。 4. 灵活的设计扩展:使用组合可以轻松地在运行时更改对象的行为,而无需修改类的结构。这种灵活性使得系统更容易适应变化和需求的变化。 当然,并不是说继承完全不应该使用,继承仍然是一种有用的工具。但在设计中,应该优先考虑使用组合,只有在确实需要共享代码和行为的情况下才考虑使用继承

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值