求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
要资料
 
 
 

设计模式教程
简单工厂模式
AbstractFactory模式
FactoryMethod模式
Prototype模式
Singleton模式
Template Method模式
Builder模式
Class-Adapter 模式
Facade 模式
Object-Adapter 模式
Bridge模式
 
 

Object-Adapter 模式
1189 次浏览
46次  
来源:火龙果软件   作者:俎涛
 
问题 某个类与统一的接口不匹配
环境 有一个统一的接口,具有多个实现 , 已有一个类,与接口的实现具有类似的行为,但是和接口不匹配。
解决方案 在已有的类和接口之间建立适配器,适配器实现接口,而适配器通过关联关系引用已有的类,由已有的类提供行为实现。
效果 把和接口不兼容的实现通过适配器统一接口,提高了规范性、复用性和可扩展能力。
实例 采用适配器模式统一设备接口

结构类图

模式范例

下面对模式给出范例,包括:

  • 需求,采用用例模型描述
  • 设计,包括:设计类图,顺序图。
  • 实现:代码目录。
  • 运行:运行效果界面

用例模型

设计类图

顺序图:

代码目录

class EtherNet

{

    public  void Send(string data)

    {

        Console.WriteLine("EtherNet is Sending: {0}",data);

    }

}

 

class EtherNetAdaptor : Device

{

    public EtherNet net ;

 

    public EtherNetAdaptor()

    {

        net = new EtherNet();

    }

    public void Transform(string data)

    {

        net.Send(data);

    }

}

class COM : Device

{

    public  void Transform(string data)

    {

        Console.WriteLine("COM is Transforming :{0}", data);

    }

}

class USB : Device

{

    public void Transform(string data)

    {

        Console.WriteLine("USB is Transforming :{0}", data);

    }

}

 

interface Device

{

    void Transform(string data);

}

 

class Computer

{

 

 

    [STAThread]

    static void Main(string[] args)

    {

        Console.WriteLine(" 请输入设备类型:");

        string deviceType = Console.ReadLine().ToLower();

 

        Console.WriteLine(" 请输入要发送的数据:");

        string data = Console.ReadLine().ToLower();

 

        Device device=null;

        switch (deviceType)

        {

            case "net":

                device = new EtherNetAdaptor();

                break;

            case "com":

                device = new COM();

                break;

            case "usb":

                device = new USB();

                break;

            default:

                Console.WriteLine(" 对不起,没有此种设备!!");

                break;

        }

 

        device.Transform(data);

    }

}

运行效果


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



1189 次浏览
46次
 捐助