Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 向客户端隐藏实现_Design Patterns - Fatal编程技术网

Design patterns 向客户端隐藏实现

Design patterns 向客户端隐藏实现,design-patterns,Design Patterns,我正在研究设计模式,但有些东西我还不了解。 例如,我经常想到向客户机隐藏实现 例如,关于工厂模式,我读到应用程序的逻辑不能知道用户界面的子类,甚至在创建过程中也不能 我不明白为什么向客户机隐藏实现是一种优势。我能想到的唯一原因是简单。实际上,我想在这种情况下,客户机只需要知道接口,而不需要知道各种子类,就可以使用对象,从而使一切变得更容易,因为您不需要知道子类的整个实现。我说得对吗 但是,我认为可能需要调用子类的特定方法,在这种情况下,您必须强制转换子类才能调用该方法 话虽如此,我想问你以下问题

我正在研究设计模式,但有些东西我还不了解。 例如,我经常想到向客户机隐藏实现

例如,关于工厂模式,我读到应用程序的逻辑不能知道用户界面的子类,甚至在创建过程中也不能

我不明白为什么向客户机隐藏实现是一种优势。我能想到的唯一原因是简单。实际上,我想在这种情况下,客户机只需要知道接口,而不需要知道各种子类,就可以使用对象,从而使一切变得更容易,因为您不需要知道子类的整个实现。我说得对吗

但是,我认为可能需要调用子类的特定方法,在这种情况下,您必须强制转换子类才能调用该方法

话虽如此,我想问你以下问题:

  • “隐藏具体类或向客户机隐藏实现”的想法意味着什么?优点是什么?只是简单和维护的问题吗
  • 此外,我希望你能给我一些关于软件工程的书籍和在线资源(理论和实践)的建议。事实上,有几个方面我还不清楚。即独立对象和接口编程


    感谢您的帮助

    假设您为A公司工作,您开发了一个API并公开了所有内容。该公司位于不同地点和时区的其他开发人员使用您的API开发他们自己的应用程序。您的API被数百人用在10个不同的项目中。因为您的代码在许多项目中使用aces,你想做得更好。你开发了更快的算法,甚至减少了20%的代码行。你很高兴在周五晚上提交了你的代码,然后离开了。当你周一早上来到办公室时,你会发现你破坏了其他人的代码。人们无法编译他们的代码,因为你删除或更改了代码你会收到很多愤怒的电子邮件和电话,最终你将不得不将你的API回滚到以前的版本

    这就是为什么你必须隐藏你的实现。一旦它公开了,你就不能改变它。想想看,如果谷歌在Android SDK中改变了一个方法名或方法的返回类型,会发生什么。它们破坏了数千个应用程序。API开发者和用户之间总是存在紧张关系。开发者想要隐藏一切,而用户想要隐藏一切如果你发布了一个非常小的界面,人们就不会使用你的API,如果你公开了很多实现细节,你就无法更改你的代码


    API的用户不应该担心或考虑具体的类。这不是他们的事,它属于API开发人员。如果你想更多地了解它,你可以阅读有效的Java和设计模式书。我建议使用首字母优先的设计模式。

    这里问这个问题似乎更好…@KornMuffin当提到其他网站时,我会问it’想想如何操作一辆车,这一点通常是有帮助的。所有的车或多或少都有一个标准的界面:解锁和启动的钥匙,前进或后退的控制,加速的控制和刹车的控制。现在想想这些界面背后有多少“具体的实现”?客户端当一辆汽车在运行时,它不需要知道它是汽油/电动/混合动力发动机,或者发动机是由水或空气冷却的,等等。因为操作员使用相同的控制装置,尽管实施方式不同,但汽车可以与操作员互换。谢谢大家的回答,我正在阅读头先设计模式,是的,我明白了iding实现、接口编程和多态性是相互关联的。隐藏实现意味着使对象独立,并且您可以对该接口的不同子类型使用相同的操作…(对不起,我的英语)