合成复用原则定义
合成复用原则,全程是Composite Reuse Principle,简称CRP,是一项面向对象设计的原则。
合成复用原则作用
合成复用原则的作用是提高代码的复用性和可维护性,通过将现有的类组合或聚合起来创建新的类,可以减少代码的重复,并且可以更灵活地扩展代码。
合成复用原则思想
合成复用原则的核心思想是:
- 在设计软件时,应该优先使用组合和聚合关系来实现代码复用,而不是继承关系;
- 通过组合和聚合关系,一个类可以将其他类组合或聚合起来,从而实现自己的功能;
- 这种方法不仅可以使代码更加简单、灵活和易于维护,还可以提高代码的复用性和可重用性。
合成复用原则案例
下面是一个使用合成复用原则的简单代码案例,通过案例再来加深理解。
// 使用组合关系实现一个简单的汽车类 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
十余年BAT架构经验,资深技术专家,就职于阿里、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》