Questions tagged «interfaces»

有关接口相关设计注意事项的问题,例如接口编程。

4
返回接口或类
假设我有一个方法 public List<User> GetBatchOfUsers(IEnumerable<int> userIDs) { List<User> users = new List<User>(); // some database stuff return users; } 我已经读过,返回一个接口(IList或者IEnumerable)比返回a 更好List。我听到的一些说法是,它隐藏了数据,并使API开发人员可以灵活地在以后更改数据的内部表示形式。 我只返回an的担心IEnumerable是您失去了功能,例如随机访问和Count属性。 我知道接受a IEnumerable作为参数是有意义的,因为它为用户提供了将数据发送到我的方法的最佳灵活性,这是方法操作的最低要求。 返回类型的最佳实践是什么?
9 c#  interfaces  class 

1
隐式与显式接口
我想我了解编译时多态和运行时多态的实际限制。但是显式接口(运行时多态,即虚拟函数和指针/引用)与隐式接口(编译时多态,即模板)之间在概念上有什么区别。 我的想法是,提供相同显式接口的两个对象必须是相同类型的对象(或具有共同的祖先),而提供相同隐式接口的两个对象不必是相同类型的对象,并且不包括隐式对象他们俩都提供的接口可以具有完全不同的功能。 有什么想法吗? 并且,如果两个对象提供相同的隐式接口,那么还有什么原因(除了不需要动态分配带有虚拟函数查找表的技术好处等)之外,还有其他原因导致这些对象不能从声明该接口的基础对象继承而来。使它成为显式接口?换一种说法:您能给我一个例子吗,两个提供相同隐式接口的对象(因此可以用作示例模板类的类型)不应从使该接口显式的基类继承? 一些相关的帖子: https://stackoverflow.com/a/7264550/635125 https://stackoverflow.com/a/7264689/635125 https://stackoverflow.com/a/8009872/635125 这是使这个问题更具体的示例: 隐式接口: class Class1 { public: void interfaceFunc(); void otherFunc1(); }; class Class2 { public: void interfaceFunc(); void otherFunc2(); }; template <typename T> class UseClass { public: void run(T & obj) { obj.interfaceFunc(); } }; 显式接口: class InterfaceClass { public: virtual void …

3
我可以使用什么代替Ruby(或任何其他动态语言)中的Interfaces?
我的目标是定义类之间的合同。 我喜欢鸭子输入法,但我也想在应用程序的不同层之间定义一个接口,以清楚地定义哪些是从外部调用的方法,哪些是另一层不应使用的辅助方法。 。 例如,在Java中,我可以使用诸如get()和save()之类的方法定义Persistor接口,然后使用需要在数据库上持久保存的所有方法来定义JdbcPersistor类。也许还有另一个RestPersistor,具有其他方法可以保存在远程Restserver上。 我不是在Ruby中请求接口,只是想知道是否有一种巧妙的方法来保持这种区别。我喜欢Ruby,但是我只从事小型项目。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.