这更像是一个道德问题,但我对它很好奇。
所以,有战略模式,你有一个战略界面,有几个实现和一堆方法,以战略界面为参数。
我们假设以下为例:
Interface: SearchStrategy
Class: StringSearch implements SearchStrategy
Class: IntSearch implements SearchStrategy
etc.
然后有一个像
这样的方法 doSearch(String a, String b, SearchStrategy strategy)
您将如何处理策略对象?传递一个实例或类?
答:doSearch("Hello","World", new StringSearch());
或
B:doSearch("Hello","World", StringSearch.class);
因此,创建一个实例并将其传递,或者传递Class对象并让该方法创建一个实例。什么是更好,更清洁的方式?
性能怎么样?当然,在功能强大的服务器上,性能不会有太大差异,但是只有少量资源和缓慢处理器的嵌入式系统呢?
答案 0 :(得分:1)
当然是一个例子。传递该类将强制doSearch()
方法使用反射来实例化Strategy对象。这只有在所有类都符合某些约定(例如具有默认构造函数)时才有效。
它不允许传递具有某种状态的策略(如caseSensitive标志,或对另一个上下文对象的引用,或其他)。
我不知道表演与此有什么关系。
答案 1 :(得分:0)
传递一个实例。您可能希望传入一个使用参数预先实例化的实例(例如数据库连接),而不能通过传递类本身来实现。
如果你想让代码创建新的实例(但是然后传递一个工厂)或者你想要做一些反射型机制,我希望传递一个类,但这些场景很少而且很远