一文让你学会“合成复用原则”,不会你来找我!

菜鸟有句话想说:“加不加班的不重要,我只是比较喜欢晚上公司门口的路灯。”

在这里插入图片描述

今天跟大家分享一下,设计模式七大原则中的“合成复用原则”。该原则阐述的是,我们应该如何复用类。

讲“合成复用原则”之前先来聊一聊类的“复用”。复用类我们可以通过“继承”和“合成”两种方式来实现。

这两种方式中,“继承”相信大家都比较了解,我们就先看一下继承的优缺点。

继承的优点

容易实现并且容易修改和扩展继承来的内容。

继承的缺点

它最大的缺点就是增加了类之间的依赖,当父类发生改变时,其子类也会被动发生改变。并且子类继承来的实现是静态的,在代码编译时期已经定义好的,在运行时是不可以发生变化的。
还有就是继承是属于“白箱”复用,父类对子类来说是透明的,这破坏了类的封装性。

在这里插入图片描述

介于继承存在的这些缺点,我们在复用类时,要优先考虑使用“合成”进行复用。

合成复用简介:

1、合成复用原则的核心思想是:在编写代码时如果需要使用其它类,那么两个类之间尽量使用合成/聚合的方式,而不是使用继承。
2、合成复用原则,传递的一种设计思路就是:我们可以通过类之间的“合成”来达到“复用”代码的诉求。

合成复用的好处就是解决了使用继承带来的缺点,我就不在此进行赘述。

任何事物有好就有坏,这是必然的。合成复用存在的缺点就是在系统中会存在较多的对象需要管理。

还有一点需要注意:不是不使用继承,而是尽量先考虑使用“合成”复用,其次在考虑使用“继承”复用。

说了这么多“合成复用原则”的理论性知识,那到底我们应该怎样应用在代码中呢?请看下面的示例。

在这里插入图片描述

案例:假设有A、B两个类。B类需要复用A类的方法。

通过“合成复用原则”来实现上述案例(不再展示继承复用)。

方式一: 使用简单依赖。在B类中添加方法,方法入参使用A类。

// 测试类
public class Test {

  public static void main(String[] args) {
    B b = new B();
    b.methodB(new A());
  }
}
// A类
class A {

  public void methodA() {
    System.out.println("A类的方法执行了。");
  }
}
// B类
class B {

  public void methodB(A a) {
    System.out.println("B类的方法执行了。");
    a.methodA();
  }
}

使用“简单依赖”的执行结果:

在这里插入图片描述

方式二: 把A类聚合到B类中。在B类中添加属性,类型为A类,通过set方法进行初始化。

// 测试类
public class Test2 {

  public static void main(String[] args) {
    B b = new B();
    System.out.println("使用聚合的执行结果:");
    b.setA(new A());
    b.methodB();
  }
}
// A类
class A {

  public void methodA() {
    System.out.println("A类的方法执行了。");
  }
}
// B类
class B {

  private A a;

  public A getA() {
    return a;
  }

  public void setA(A a) {
    this.a = a;
  }

  public void methodB() {
    System.out.println("B类的方法执行了。");
    this.a.methodA();
  }
}

使用“聚合”的执行结果:

在这里插入图片描述

方式三: 把A类组合到B类中。在B类中添加属性,类型为A类,并直接new出来。

public class Test3 {

  public static void main(String[] args) {
    B b = new B();
    System.out.println("使用组合的执行结果:");
    b.methodB();
  }
}

class A {

  public void methodA() {
    System.out.println("A类的方法执行了。");
  }
}

class B {

  private A a = new A();

  public void methodB() {
    System.out.println("B类的方法执行了。");
    this.a.methodA();
  }
}

使用“组合”的执行结果:

在这里插入图片描述

以上就是使用“合成复用原则”的一些基本知识。切记合成复用原则向我们传达的设计理念是:优先考虑使用“合成”复用,其次在使用“继承”,并不是不使用“继承”。 继承也是有其优点的。

今天的分享就到这里了,如果感觉“菜鸟”写的文章还不错,记得点赞关注呦!你们的支持就是我坚持下去的动力。文章哪里写的有问题的也希望大家可以指出,我会虚心受教。

在这里插入图片描述

Eclipse是一个开放源代码的集成开发环境(IDE),可用于Java开发,但也可以用于其他编程语言的开发。在本文中,我将向你展示如何使用Eclipse进行Java开发。 1. 下载Eclipse 首先,你需要从Eclipse官方网站下载Eclipse IDE。下载页面上将提供几个不同的版本,包括Eclipse IDE for Java Developers、Eclipse IDE for JavaScript and Web Developers,以及Eclipse IDE for C/C++ Developers等。选择适合你的版本,然后按照安装向导进行安装。 2. 创建Java项目 一旦你安装了Eclipse,你可以启动它并创建一个新的Java项目。选择“File”->“New”->“Java Project”,然后按照向导创建一个新的Java项目。在创建项目时,你需要指定项目名称、项目类型以及JRE版本等信息。 3. 创建Java类 一旦你创建了一个Java项目,你就可以创建一个Java类。选择你的Java项目,在“src”文件夹上右键单击,然后选择“New”->“Class”。输入类名和选择要继承的类(如果有的话),然后点击“Finish”。 4. 编写Java代码 现在你已经创建了一个Java类,可以开始编写Java代码了。在Eclipse的编辑器中,你可以输入Java代码并保存它。当你保存Java文件时,Eclipse会自动编译你的代码,并在Problems视图中显示任何编译错误。 5. 运行Java程序 一旦你编写了Java代码并保存了它,你可以运行Java程序。右键单击Java文件,然后选择“Run As”->“Java Application”。如果一切顺利,你的Java程序将在控制台中输出结果。 6. 调试Java程序 如果你的Java程序出现了错误或不按预期运行,你可以使用Eclipse的调试器来调试它。在Eclipse的编辑器中,你可以设置断点并启动调试器。当程序执行到断点时,调试器会暂停程序并允许你检查变量、运行代码等。 7. 导入外部JAR包 有时,你可能需要使用外部JAR包来完成你的Java项目。在Eclipse中,你可以简单地将外部JAR包导入到你的项目中。右键单击Java项目,然后选择“Build Path”->“Configure Build Path”。在“Libraries”选项卡上,你可以添加外部JAR包。 总结 在本文中,我们介绍了如何使用Eclipse进行Java开发。我们学习了如何创建Java项目、创建Java类、编写Java代码、运行Java程序、调试Java程序以及导入外部JAR包。Eclipse具有强大的功能,可以大大提高Java开发的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值