有什么用抽象的?

问题描述 投票:-2回答:1

我挣扎了解Java的整体使用抽象的。

我已经工作过的例子在这个环节:https://javatutorial.net/java-abstraction-example我理解它的实现,但我不明白为什么它甚至是必要的。为什么他们的Employee类中提出,如果他们只是在2子类去做出再次calculateSalary方法?

java abstraction
1个回答
3
投票

整体采用抽象的脱钩。为了与Employee工作,一个不需要知道实现,只是接口和它的合同。这是,例如,用于Collections.sort(List<T> list)Collections.sort(...)的程序员并不需要知道具体名单的执行情况,以便对其进行排序。这提供了实现支持符合List interface未来代码的好处。 This question是在这方面(#selfPromotion)有关。较低的偶合导致更少的摩擦和总那么脆弱代码。

这就是说,你所提供的例子是,因为它违反了Single Responsibility Principle一个贫穷的一个:它不是一个Employee实例的责任来计算工资。对于这一点,你应该有一个单独的对象,计算工资的基础上,一个Employee实例和一些工作时间。在内部,这个尤伯杯计算器可以使用Chain of Responsibility,持有一个CalculatorEmployee-实施,脱钩她/他的工资是如何计算的Employee。这提供了extensability和灵活性的好处:如果这样一个工资计算的变化(例如,也许该公司切换策略,以便每个FullTimeEmployee赚取同样的薪水,也许该公司希望来计算的逐周而不是薪水一个由月的基础上),使用FullTimeEmployee其他服务不受影响说)。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.