Oop 设计模式-返回类型不同时使用什么

Oop 设计模式-返回类型不同时使用什么,oop,c#-4.0,architecture,Oop,C# 4.0,Architecture,如果您有不同类型的搜索,如web、图像等,您将如何构建此解决方案。 因此,实际上输入是相同的,但根据所选的搜索类型,结果是不同的 我可以想到策略n工厂处理输入和选择不同的搜索算法,但如何处理返回类型 提前感谢您可以使用BaseSearchResult类,也可以将结果连接起来,以便不同类型的搜索类可以返回相同类型的结果 编辑:您也可以使用泛型,如下所示: class SearchByType1<T> { public T ExecuteSearch() { } }

如果您有不同类型的搜索,如web、图像等,您将如何构建此解决方案。 因此,实际上输入是相同的,但根据所选的搜索类型,结果是不同的

我可以想到策略n工厂处理输入和选择不同的搜索算法,但如何处理返回类型


提前感谢

您可以使用
BaseSearchResult
类,也可以将结果
连接起来
,以便不同类型的搜索类可以返回相同类型的结果

编辑:您也可以使用泛型,如下所示:

class SearchByType1<T>
{
   public T ExecuteSearch()
   {
   }
}
class SearchByType1
{
公共行政研究
{
}
}

所谓基类,我的意思是,如果您可以拥有各种搜索结果的一些常见和基本属性,您可以创建一个基类,并通过执行搜索返回该基类,这与接口的想法类似。

搜索结果可以返回两个属性:

  • 搜索结果的类型
  • 有效负载(搜索结果本身)
例如:

using System;

public enum SearchResultType
{
    WebPage = 1,
    Image = 2,
    Video = 3,
    Tweet = 4
}

public class SearchResult
{
    public SearchResultType SearchResultType { get; set; }
    public Object Payload { get; set; }

    public SearchResult()
    {
    }
}

负载类型可以是对象,也可以是WebPageSearchResultPayload和ImageSearchResultPayload将从中继承的BaseSearchResultPayload抽象类。如果符合您的需要,您也可以使用泛型或动态,这取决于您应用程序的详细信息和上下文。

取决于详细信息,但抽象工厂或策略模式是合适的。关于返回类型,它取决于许多事情。从简单地使用对象开始,使用泛型类。例如,您可以使用返回类型,甚至对象,作为工厂参数来返回您的特定对象。感谢我一直在尝试,泛型对我更有效。感谢您的回复,因为@AD.Net在您之前回复过,我最终使用泛型,我接受了这一回答。