我这里有一个适配器模式的示例(是的,您可以检查它是否正确实现),但我真正的问题是在这里,据说适配器设计模式执行以下操作:“将一个类的接口转换为另一个接口客户端期望。适配器允许类一起工作,否则由于接口不兼容而无法工作。” 但是我对那个声明有点困惑,根据下面的代码,我不太明白,我想知道它发生在哪里。
这是我的课程/界面:
public interface ILogger
{
void Write(string data);
}
public class InfrastructureDebugLogger : ILogger
{
public void Write(string data)
{
Debug.WriteLine(data);
}
}
public class InfrastructureLoggerToDatabaseAdapter : ILogger
{
private IRepository<Log> adaptee;
public InfrastructureLoggerToDatabaseAdapter(IRepository<Log> adaptee)
{
this.adaptee = adaptee;
}
public void Write(string data)
{
var log = new Log() { Value = data };
adaptee.Create(log);
}
}
public interface IRepository<T>
{
void Create(T item);
void Update(T item);
T Find(int id);
}
public class Log
{
public int ID { get; set; }
public string Value { get; set; }
}
public class LogRepository : IRepository<Log>
{
public void Create(Log item)
{
Console.WriteLine("Created an item inside the LogRepository");
}
public void Update(Log item)
{
throw new NotImplementedException();
}
public Log Find(int id)
{
throw new NotImplementedException();
}
}
class Program
{
static void Main(string[] args)
{
ILogger logger = new InfrastructureDebugLogger();
Console.Write("Data: ");
string data = Console.ReadLine();
logger.Write(data);
InfrastructureLoggerToDatabaseAdapter loggerToDatabaseAdapter =
new InfrastructureLoggerToDatabaseAdapter(new LogRepository());
loggerToDatabaseAdapter.Write(data);
Console.ReadKey();
}
}