Итак, я смотрю на шаблон проектирования адаптера. Я вижу, что намерение состоит в том, чтобы позволить клиенту получить доступ к методам класса, где их интерфейсы несовместимы .
Теперь я смотрю на этот пример .
interface ITarget
{
List<string> GetProducts();
}
public class VendorAdaptee
{
public List<string> GetListOfProducts()
{
List<string> products = new List<string>();
products.Add("Gaming Consoles");
products.Add("Television");
products.Add("Books");
products.Add("Musical Instruments");
return products;
}
}
class VendorAdapter:ITarget
{
public List<string> GetProducts()
{
VendorAdaptee adaptee = new VendorAdaptee();
return adaptee.GetListOfProducts();
}
}
class ShoppingPortalClient
{
static void Main(string[] args)
{
ITarget adapter = new VendorAdapter();
foreach (string product in adapter.GetProducts())
{
Console.WriteLine(product);
}
Console.ReadLine();
}
}
Итак, основываясь на описании ShoppingPortalClient хочет использовать VendorAdaptee , но не может из-за несовместимого интерфейса. Вот мой глупый вопрос ... почему ShoppingPortalClient не может просто сделать это:
var adaptee = new VendorAdaptee();