舊有程式需增加功能或行為,而不需重寫或變動舊有程式,使用者統一透過interface存取新程式.
例如:Mac OS可執行本身PowerPC Process指令集也可執行不同指令集的windows(intel sse),也就是在Mac OS底下可以執行Windows,讓新舊程式可共存.
使用方式:
class Adaptee以上面的例子來說:
{
// Provide full precision
public double SpecificRequest (double a, double b)
{
return a/b;
}
}
// Required standard for requests
interface ITarget
{
// Rough estimate required
string Request (int i);
}
// Implementing the required standard via Adaptee
class Adapter : Adaptee, ITarget
{
public string Request (int i)
{
return "Rough estimate is " + (int) Math.Round(SpecificRequest (i,3));
}
}
舊有的程式使用如下方式叫用,結果如下:
Adaptee first = new Adaptee( );結果:1.66666666666667
first.SpecificRequest(5,3);
新的程式使用如下方式叫用,結果如下:
ITarget second = new Adapter( );結果:2
second.Request(5);
參考書籍c#3.0 design pattern
沒有留言:
張貼留言