假设您正在设计一个使用处理程序来处理特定抽象的应用程序。如果处理程序本身应该提供相同的功能,那么正确的设计模式是什么,但在特定情况下可能需要提供稍微更多的功能,这取决于源自父类的一些逻辑集?
class site
{
searchhandler ha = new searchhandler();
void search()
{
ha.search();
}
}
class searchhandler()
{
public void search()
{
//do work
}
}
site google = new site();
site yahoo = new site();
site bing = new site();
google.search();
yahoo.search();
bing.search();
换句话说,基于上面的代码,假设我需要在处理程序级别修改bing.search(),以便必须以某种方式覆盖它的searchhandler.search()实例。实施这种方法的适当设计模式是什么?
答案 0 :(得分:0)
如果我遇到了您的问题,如果您遵循此演示架构,您可以实现您想要的。定义接口和类,如下所示。
public interface ISearchEngine
{
void Search();
}
public class Site
{
ISearchEngine searchHandler = null;
public Site(ISearchEngine searchHandler )
{
this.searchHandler = searchHandler;
}
public void DoSearch()
{
searchHandler.Search();
}
}
public class GoogleSearch : ISearchEngine
{
public virtual void Search()
{
Console.Write("Google Search.");
}
}
public class YahooSearch : ISearchEngine
{
public virtual void Search()
{
Console.Write("Yahoo Search.");
}
}
public class BingSearch : ISearchEngine
{
public virtual void Search()
{
Console.Write("Bing Search.");
}
}
public class BingSearchV1 : BingSearch
{
public override void Search()
{
Console.Write("Bing V1 Search.");
}
}
你可以按照以下方式使用它......
Site google = new Site(new GoogleSearch());
Site yahoo = new Site(new YahooSearch());
Site bing = new Site(new BingSearchV1());
google.DoSearch();
yahoo.DoSearch();
bing.DoSearch();
我希望你得到答案。