我正在研究设计模式,有一些我无法理解的事情。 例如,我经常遇到将实现隐藏到客户端的想法。
例如,关于工厂模式,我读到应用程序的逻辑必须不知道用户界面的子类,即使在创建过程中也是如此。
我不明白为什么将实现隐藏到客户端是一个优势。我能想到的唯一原因是简单。实际上,我想在这种情况下,客户端需要只知道接口,而不是各种子类,以便使用对象,从而使一切变得更容易,因为您不需要知道子类的整个实现。我对吗?
但是,我认为您可能需要调用子类的特定方法,在这种情况下,您需要强制转换子类以调用该方法。
话虽如此,我想问你以下问题:
此外,我希望您就软件工程的书籍和在线资源(理论与实践)给我一些建议。实际上,它有几个方面我不清楚。即独立的对象和编程接口。
感谢您的帮助
答案 0 :(得分:2)
假设您正在为公司A工作,并且您开发了一个API并将所有内容公之于众。该公司在不同位置和时区的其他开发人员使用您的API开发自己的应用程序。您的API在10个不同的项目中被数百个其他人使用。由于您的代码在很多地方使用,因此您希望使其更好。您开发了更快的算法,甚至将代码行减少了20%。你很高兴在星期五晚上提交了你的代码并离开了。当你周一早上来到办公室时,你会发现你打破了别人的代码。人们无法编译他们的代码,因为您已删除或更改了他们所依赖的代码。您将收到许多愤怒的电子邮件和电话,最终您将不得不将您的API回滚到以前的版本。
这就是你必须隐藏你的实现的原因。一旦公开,你就无法改变它。想想如果Google在Android SDK中更改方法名称或返回方法类型会发生什么。他们打破了数千个应用程序API开发人员和用户之间始终存在紧张关系。开发人员希望隐藏所有内容,用户希望访问所有内容。如果你发布一个非常小的界面,人们将不会使用你的API,如果你公开了很多实现细节,你将无法更改你的代码。
API的用户不应该担心或考虑具体的类。他们的业务不属于API开发人员。如果您想了解更多信息,可以阅读Effective Java和Design Pattern一书。我推荐Head first Design Patterns。