0
我想問你的意見是否在場景中使用Bridge模式是好的。該方案是我們需要開發一個通用搜索用戶界面,可以接受不同的搜索參數,並基於這些參數,我們需要調用不同的服務。例如:如果參數是FIN號碼和人名,那麼我們必須調用PersonService進行搜索。在這種情況下使用Bridge?
爲了使類型安全,我正在考慮使用Bridge patter,其中抽象和實現可以獨立工作。
執行下面的代碼後,我覺得我強迫自己使用這種模式在這種情況下,即使這種模式不能很好地適合這個...
你們有什麼覺得?有什麼辦法可以改變代碼來使它更好嗎?或者這種模式根本無法用於這種情況?
抽象類SearchEngine公共抽象IList查詢(); }
class PersonSearchEngine : SearchEngine<Person> {
private DataQuery<Person> dataQuery;
public PersonSearchEngine(DataQuery<Person> dataQuery){
this.dataQuery = dataQuery;
}
public string FIN { set; get; }
public string Name { set; get; }
public override IList<Person> Query() {
return dataQuery.Query(new Person() { FIN = this.FIN, Name = this.Name });
}
}
class LocationSearchEngine : SearchEngine<House> {
private DataQuery<House> dataQuery;
public LocationSearchEngine(DataQuery<House> dataQuery) {
this.dataQuery = dataQuery;
}
public string BlockNumber { set; get; }
public string StreetName { set; get; }
public string HouseNumber { set; get; }
public string PostalCode { set; get; }
public override IList<House> Query() {
return dataQuery.Query(new House() { BlockNumber = this.BlockNumber, StreetName = this.StreetName, HouseNumber = this.HouseNumber, PostalCode = this.PostalCode});
}
}
abstract class DataQuery<T>{
public abstract IList<T> Query(T arg) ;
}
class PersonDataQuery : DataQuery<Person> {
public override IList<Person> Query(Person arg) {
Console.WriteLine("Searching Person.....");
return null;
}
}
class LocationDataQuery : DataQuery<House> {
public override IList<House> Query(House arg) {
Console.WriteLine("Searching Location.....");
return null;
}
}
class Person {
public string FIN { get; set; }
public string Name { get; set; }
}
class House {
public string BlockNumber { set; get; }
public string StreetName { set; get; }
public string HouseNumber { set; get; }
public string PostalCode { set; get; }
}
用法:
SearchEngine<Person> searchEngine = new PersonSearchEngine(new PersonDataQuery());
searchEngine.Query();
Console.ReadKey();