provider设计模式的核心概念是入口程序将某个对外提供的服务接口转嫁到不同的provider去实现,而被选择的provider并不是通过继承服务接口去实现服务,而是通过另外的独立的继承途径去实现.相比接口继承实现模式,provider模式提供了更多的可扩展性和灵活性.
public abstract class ProviderBase
{
protected string name;
protected string description;
public string Name { get; }
public string Description { get; }
public abstract void Initialize();
}
public abstract class StoreProvider : ProviderBase
{
public abstract void AddProductToStore();
}
public class CornerStoreProvider : StoreProvider
{
public override void Initialize()
{
throw new NotImplementedException();
}
public override void AddProductToStore()
{
throw new NotImplementedException();
}
}
public class VendingMachineStoreProvider : StoreProvider
{
public override void Initialize()
{
throw new NotImplementedException();
}
public override void AddProductToStore()
{
throw new NotImplementedException();
}
}
public static class Store
{
static Store()
{
provider = new CornerStoreProvider();
}
static StoreProvider provider;
public static StoreProvider Provider { get { return provider; } }
public static void AddProductToStore()
{
return Provider.AddProductToStore();
}
}
public class Program
{
public void ClientCoding()
{
//客户端编码
Store.AddProductToStore();
}
}