我是否以正确的方式实施SOLID原则?

时间:2017-03-31 22:37:35

标签: solid-principles

这是我第一次使用SOLID原则编写C ++代码。因此,我不知道以下示例代码是否正确实现了原则。我的问题遵循代码。

我非常感谢所有回复。谢谢!

以下是样本:

ICustomer

问题:

  1. 这是一个有效的SOLID实现吗?如果不是,应该如何。
  2. 示例GetName()包含GetSurname()GetAddress()GetPhoneNumber()。我想要一个额外的信息CExportToExcel。我应该把它放在哪里?它会带来什么变化?
  3. 在样本中有CExportToHTML。现在我想要一个额外的类idProduccion | hp | totalHp | 4 | 40 | 40 | 4 | 35 | 35 | 5 | 90 | 90 | 6 | 2500 | 2500 | 并使用它。我该怎么做?

1 个答案:

答案 0 :(得分:1)

关键反馈是通过具体的类构造函数获取依赖关系,并将这些依赖关系作为接口而不是具体的类,所以..在对象组合根中,您可以决定传递哪个实际的具体实现来创建您的对象,即接口的另一个产品实现或仅用于可测试性目的的测试模拟类。它也很适合依赖注入模式和框架。

作为一个例子: 将您的CShopOwner类更改为具有IExporter对象的构造函数,将该对象保留为属性并在Execute方法中使用该对象。在创建CShopOwner对象时,在运行时可以确定IExporter接口的具体实现是什么,以便传递它。 CExportToHTML

这应该涵盖您的第1和第3个问题。关于你的第二个问题。如果GetPhoneNumber()ICustomer的所有实施相关,那么从表面上看,您应该仍然创建一个新界面,使用一种方法继承ICustomer - GetPhoneNumber() - 而不是更改ICustomer接口,特别是如果它已被客户端代码使用,因为您通过更改它来破坏合同,并可能导致现有客户端出现问题。另一方面,如果您评估情况和风险,您可以直接更改ICustomer界面及其所有消费者,如果这是您自己的代码将更容易。我们都做到了:)