求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code
会员   
订购 | 案例 | 建模扩展语言 | 模型框架 | 学习资源 | 培训&咨询 | 解决方案 | 用户组 | 客户专区 | 联系我们
  1197 次浏览  11 次
模型库 > 模型库
模型库简介  

在线模型库
WebEA
学习资料
模型框架
产品购买
MaaS服务

面向对象设计模式的在线模型

作者: 俎涛 (火龙果科技)

面向对象设计模式的在线模型
作者: 俎涛 (火龙果科技)
 

设计模式是经过提炼整理的有效设计经验,可以帮助开发人员快速复用别人的设计方案。经典的面向对象的可复用软件设计提供了23种设计模式,是面向对象程序设计的很好的参考。为了让读者更方便的学习设计模式,我们选择部分典型设计模式,采用使用建模工具EA、采用UML建模语言进行了建模。

为了让更多的人学习,我们采用模型库和WebEA把这些设计模式发布出来,欢迎阅读。

如下是目前提供模型的设计模式:

每个设计模式都采用了如下的描述

设计模式的概要描述

采用典型的设计模式描述格式,描述设计模式要解决的问题、适用的环境、解决方案和效果,并辅以 d 设计实例。

问题 应用调用 多个类,以后可能会加入新的类,这会引起调用者的波动。
环境 多个类具有行为类似性。
解决
方案
把多个类似行为的类抽象为一个类,把抽象类作为稳定的调用点,同时用工厂封装不同类的实例化,封装变化。
效果 调用类不会受新加入的类型影响。
实例 Computer 调用不同的 Device 发送数据

设计模式的 UML 图描述

对设计模式提供了应用示例,采用 UML 对应用示例进行了建模,包括:

  • 用例图:从用户视角描述功能需求。
  • 设计类图:从开发视角描述程序的结构设计。
  • 顺序图:从开发视角描述为了实现用例的对象交互。

如下是《设计模式应用示例: Simple Factory 》的 UML 建模图例:

 

用例图

 

设计类图

 

 

 

顺序图

 

设计模式的代码示例

针对设计模式应用示例,提供了C#代码实例,代码无需修改既可以编译运行。

《设计模式应用示例: Simple Factory 》的 C# 代码示例:

 

using System;

 

interface  Device

{

      void Send(string data) ;

}

 

class EtherNet : Device

{

    public  void Send(string data)

    {

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

    }

}

class COM : Device

{

    public  void Send(string data)

    {

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

    }

}

class USB : Device

{

    public void Send(string data)

    {

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

    }

}

 class Wireless : Device

{

    public void Send(string data)

    {

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

    }

}

class FactoryDevice

{

       Device device = null;

   

    public Device CreateDevice(string deviceType)

    {       

        switch (deviceType)

        {

            case "net":

                device = new EtherNet();

                break;

            case "com":

                device = new COM();

                break;

            case "usb":

                device = new USB();

                break;

            case "wireless":

                device = new Wireless();

                break;

            default:

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

                break;

        }

        return device;

    }

}

class Computer

{  

    [STAThread]

    static void Main(string[] args)

    {

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

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

       

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

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

 

        FactoryDevice fac = new FactoryDevice();

        Device device = fac.CreateDevice(deviceType);

 

       device.Send(data);

       

        Console.ReadLine();

    }

}

如果设计模式模型的详细信息,请浏览   《 模型库:面向对象设计模式》

如果希望进一步学习 SysML 或 UML 有关的建模课程和工具,欢迎访问:

如果您希望了解更多信息:

  • 欢迎访问建模者频道 http://modeler.org.cn/
  • 也欢迎直接联系我们 zhgx@uml.net.cn ,010-62670969
1197 次浏览  11 次