适配器模式的应用
一个软件团队开发绘图系统,设计了圆对象(Circle)、矩形对象(Rectangle),线对象(Line)都支持Draw()函数,即可以通过Draw()函数绘制图形。为了加快项目进度,将角度对象(Angle)绘制功能交给了合作团队实现。但合作团队将角度对象绘制函数定为了DrawAngle()。绘图系统提供给用户后,用户不满意,希望能统一的调用,不用记太多命令。应用适配器模式,用C#控制台应用程序完善该设计。绘制该模式的UML图。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
class Program
{
abstract class Shape
{
protected string kind;
public Shape(string kind)
{
this.kind = kind;
}
public abstract void Draw();
}
class Circle : Shape
{
public Circle(string kind) : base(kind) { }
public override void Draw()
{
Console.WriteLine("绘制{0}", kind);
}
}
class Rectangle : Shape
{
public Rectangle(string kind) : base(kind) { }
public override void Draw()
{
Console.WriteLine("绘制{0}", kind);
}
}
class Line : Shape
{
public Line(string kind) : base(kind) { }
public override void Draw()
{
Console.WriteLine("绘制{0}", kind);
}
}
class Angle
{
private string kind;
public string KIND
{
get { return kind; }
set { kind = value; }
}
public void DrawAngle()
{
Console.WriteLine("绘制{0}", kind);
}
}
class Adapter : Shape
{
private Angle agl=new Angle();
public Adapter(string kind):base(kind)
{
agl.KIND = kind;
}
public override void Draw()
{
agl.DrawAngle();
}
}
static void Main(string[] args)
{
Shape cir=new Circle("circle");
cir.Draw();
Shape rec = new Rectangle("rectangle");
rec.Draw();
Shape li = new Rectangle("line");
li.Draw();
Shape adapter_angle = new Adapter("angle");
adapter_angle.Draw();
}
}