1,定義壹個抽象類或者接口來表示壹個圖,這個抽象類或者接口包括兩種方法:求面積和求周長。
2.定義壹個具體的類來實現這個接口或者繼承這個抽象類來實現其中定義的功能。
3.調用時定義這個接口類型或者抽象類對象,然後根據實例化的不同子類調用不同的方法,也就是類的多態性。
例如,我使用接口來實現以下內容:
接口IDraw
{
浮動面積();
float Round();
}
類正方形:IDraw
{
私有float _ x;
公共廣場(float x){this。_ x = x}
公共浮動區()
{ return _ x * _ x}
公共浮動回合()
{ return _ x * 4;}
}
矩形類:IDraw
{
私有float _x,_ y;
公共矩形(浮點x,浮點y){this。_ x = x這個。_ y = y}
公共浮動區()
{ return _ x * _ y;}
公共浮動回合()
{ return _ x * 2+_ y * 2;}
}
類三角形:IDraw
{
//類似於上面的定義
}
void Main()
{
IDraw繪制;
draw = new Square(5);
畫吧。area();//計算平方面積
draw =新矩形(5,10);
畫吧。area();//計算矩形面積
draw =新三角形(5,10);
畫吧。area();//計算三角形面積
}
多態的好處是顯而易見的,方便以後在不影響原有功能的情況下擴展功能。如果加上橢圓,菱形等。,妳只需要定義新的類來實現IDraw。
調用者中也實現了統壹的接口,用Area()和Round()計算任意圖的面積和周長。
另外,如果進壹步考慮增強調用者的可維護性,可以使用設計模式IOC/DI,即控制反轉/依賴註入,在配置文件中配置目前需要實例化的類,然後使用反射加載相應的類,實例化對象,調用其方法。
請參考martin.fowler關於schema DI的文章。