设计模式 - 当返回类型是不同的使用什么(Design Patterns - what to use

2019-10-30 10:52发布

你会如何建筑师这个解决方案,你有不同类型的搜索,如网页,图像等,所以在效果器的输入是相同的,但结果不同根据搜索类型选择的是

我能想到的战略,策略厂来处理输入和选择不同的搜索算法,但如何处理返回类型?

提前致谢

Answer 1:

您可以有一个BaseSearchResult一种类的或有结果interfaced ,让不同类型的搜索类别可以返回相同类型的结果。

编辑:你也可以去使用泛型,是这样的:

class SearchByType1<T>
{
   public T ExecuteSearch()
   {
   }
}

通过基类我的意思是,如果你可以有各种搜索结果中的一些常见的和必要的属性,你可以创建一个基类,并通过执行搜索,与接口类似的想法返回。



Answer 2:

搜索结果可能返回2个属性:

  • 搜索结果的类型
  • 有效载荷(搜索结果本身)

例:

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()
    {
    }
}

有效负载类型可以是一个对象,或BaseSearchResultPayload抽象类从中WebPageSearchResultPayload和ImageSearchResultPayload将继承。 你也可以使用泛型的或动态的,如果适合您的需求,这取决于你的应用程序的细节和背景。



文章来源: Design Patterns - what to use when the return type is different