CRP:英文全名Composite Reuse Principle,译为复合的复用原则。
可以解释为类应该通过复合的使用(包含实现所需功能的其他类的实例)实现多态行为和代码重用,而不是从基或父类继承。
代码示例:
class Employee {
BonusCalculator bc;
...
}
interface BonusCalculator {
Money computeBonus();
}
class Manager extends Employee {
Money computeBonus() {
bc = new ManagerBonusCalculator();
return bc.computeBonus();
}
}
class ManagerBonusCalculator implements BonusCalculator {
Money computeBonus {... // special computation}
}
策略模式就是根据这个原则写的。