适配器模式的应用


适配器模式的应用

一个软件团队开发绘图系统,设计了圆对象(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();


    }
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值