合成复用原则详解(定义作用及思想实例)

合成复用原则详解(定义作用及思想实例)-mikechen

合成复用原则定义

合成复用原则,全程是Composite Reuse Principle,简称CRP,是一项面向对象设计的原则。

 

合成复用原则作用

合成复用原则的作用是提高代码的复用性和可维护性,通过将现有的类组合或聚合起来创建新的类,可以减少代码的重复,并且可以更灵活地扩展代码。

 

合成复用原则思想

合成复用原则的核心思想是:

  1. 在设计软件时,应该优先使用组合和聚合关系来实现代码复用,而不是继承关系;
  2. 通过组合和聚合关系,一个类可以将其他类组合或聚合起来,从而实现自己的功能;
  3. 这种方法不仅可以使代码更加简单、灵活和易于维护,还可以提高代码的复用性和可重用性。

 

合成复用原则案例

下面是一个使用合成复用原则的简单代码案例,通过案例再来加深理解。

// 使用组合关系实现一个简单的汽车类
class Engine {
    public void start() {
        System.out.println("引擎启动");
    }

    public void stop() {
        System.out.println("引擎停止");
    }
}

class Car {
    private Engine engine;

    public Car() {
        this.engine = new Engine();
    }

    public void start() {
        this.engine.start();
    }

    public void stop() {
        this.engine.stop();
    }
}

// 使用聚合关系实现一个简单的车库类
class Garage {
    private List<Car> cars;

    public Garage() {
        this.cars = new ArrayList<>();
    }

    public void addCar(Car car) {
        this.cars.add(car);
    }

    public void removeCar(Car car) {
        this.cars.remove(car);
    }

    public void startAllCars() {
        for (Car car : cars) {
            car.start();
        }
    }

    public void stopAllCars() {
        for (Car car : cars) {
            car.stop();
        }
    }
}

// 使用汽车和车库类
Engine engine = new Engine();
Car car1 = new Car();
Car car2 = new Car();
Garage garage = new Garage();
garage.addCar(car1);
garage.addCar(car2);
garage.startAllCars();
garage.stopAllCars();

在这个代码案例中,我们使用了组合关系实现了一个简单的汽车类,将引擎类作为汽车类的一个成员变量,从而实现了汽车的启动和停止功能。

我们还使用了聚合关系实现了一个简单的车库类,将多个汽车类聚合在一起,从而实现了所有汽车同时启动和停止的功能。

这个代码案例展示了如何使用合成复用原则来实现代码的复用和可维护性。

以上就是合成复用原则详解,更多设计模式原则请查看:设计模式六大原则详解(通俗易懂)

作者简介

陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

👇阅读更多mikechen架构文章👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法