我需要知道这个例子是否符合适配器模式的意图。
此示例旨在满足可插拔适配器模式,但它适应两个接口:
interface ITargetOld {
double Precise(double i);
}
interface ITargetNew {
string RoundEstimate(int i);
}
public class Adapter : ITargetOld, ITargetNew {
public double Precise(double i) {
return i / 3;
}
public string RoundEstimate(int i) {
return Math.Round(Precise(i)).ToString();
}
public string NewPrecise(int i) {
return Precise(Convert.ToInt64(i)).ToString();
}
}
客户将是:
class Program {
static void Main(string[] args) {
ITargetOld adapter1 = new Adapter();
Console.WriteLine("Old division format (Precise) " + adapter1.Precise(5));
ITargetNew adapter2 = new Adapter();
Console.WriteLine("New division format (Round Estimate) " + adapter2.RoundEstimate(5));
Adapter adapter3 = new Adapter();
Console.WriteLine("New Precise format " + adapter3.NewPrecise(5));
Console.ReadKey();
}
}
圣拉斐尔
答案 0 :(得分:1)
对我来说,你的代码并不是真正的适配器。适配器模式描述了具有类型A的对象并希望在需要类型B的代码中使用它的情况。
interface A {
method doSmthA();
}
interface B {
method doSmthB();
}
class AdapterAToB implements B{
private A a;
constructor AdapterAToB(A a) {
this.a = a;
}
method doSmthB() {
a.doSomthA();
}
}
在上述情况下,您将类型A的对象转换为接口B,并可以在需要B实例的位置使用它。