23种设计模式UML类图及对应示例代码.docx

上传人:b****5 文档编号:3244783 上传时间:2022-11-21 格式:DOCX 页数:53 大小:316.02KB
下载 相关 举报
23种设计模式UML类图及对应示例代码.docx_第1页
第1页 / 共53页
23种设计模式UML类图及对应示例代码.docx_第2页
第2页 / 共53页
23种设计模式UML类图及对应示例代码.docx_第3页
第3页 / 共53页
23种设计模式UML类图及对应示例代码.docx_第4页
第4页 / 共53页
23种设计模式UML类图及对应示例代码.docx_第5页
第5页 / 共53页
点击查看更多>>
下载资源
资源描述

23种设计模式UML类图及对应示例代码.docx

《23种设计模式UML类图及对应示例代码.docx》由会员分享,可在线阅读,更多相关《23种设计模式UML类图及对应示例代码.docx(53页珍藏版)》请在冰豆网上搜索。

23种设计模式UML类图及对应示例代码.docx

23种设计模式UML类图及对应示例代码

 23种设计模式UML类图及对应示例代码

(一) 收藏

1.DoFactory.GangOfFour.Abstract.Structural

     AbstractFactory:

提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

   工厂模式:

客户类和工厂类分开。

消费者任何时候需要某种产品,只需向工厂请求即可。

消费者无须修改就可以接纳新产品。

缺点是当产品修改时,工厂类也要做相应的修改。

如:

如何创建及如何向客户端提供。

using System;

namespace DoFactory.GangOfFour.Abstract.Structural

{

    /// 

    /// MainApp startup class for Structural

    /// Abstract Factory Design Pattern.

    /// 

    class MainApp

    {

        /// 

        /// Entry point into console application.

        /// 

        public static void Main()

        {

            // Abstract factory #1

            AbstractFactory factory1 = new ConcreteFactory1();

            Client client1 = new Client(factory1);

            client1.Run();

            // Abstract factory #2

            AbstractFactory factory2 = new ConcreteFactory2();

            Client client2 = new Client(factory2);

            client2.Run();

            // Wait for user input

            Console.Read();

        }

    }

    // "AbstractFactory"

    abstract class AbstractFactory

    {

        public abstract AbstractProductA CreateProductA();

        public abstract AbstractProductB CreateProductB();

    }

    // "ConcreteFactory1"

    class ConcreteFactory1 :

 AbstractFactory

    {

        public override AbstractProductA CreateProductA()

        {

            return new ProductA1();

        }

        public override AbstractProductB CreateProductB()

        {

            return new ProductB1();

        }

    }

    // "ConcreteFactory2"

    class ConcreteFactory2 :

 AbstractFactory

    {

        public override AbstractProductA CreateProductA()

        {

            return new ProductA2();

        }

        public override AbstractProductB CreateProductB()

        {

            return new ProductB2();

        }

    }

    // "AbstractProductA"

    abstract class AbstractProductA

    {

    }

    // "AbstractProductB"

    abstract class AbstractProductB

    {

        public abstract void Interact(AbstractProductA a);

    }

    // "ProductA1"

    class ProductA1 :

 AbstractProductA

    {

    }

    // "ProductB1"

    class ProductB1 :

 AbstractProductB

    {

        public override void Interact(AbstractProductA a)

        {

            Console.WriteLine(this.GetType().Name + 

                " interacts with " + a.GetType().Name);

        }

    }

    // "ProductA2"

    class ProductA2 :

 AbstractProductA

    {

    }

    // "ProductB2"

    class ProductB2 :

 AbstractProductB

    {

        public override void Interact(AbstractProductA a)

        {

            Console.WriteLine(this.GetType().Name + 

                " interacts with " + a.GetType().Name);

        }

    }

    // "Client" - the interaction environment of the products

    class Client

    {

        private AbstractProductA AbstractProductA;

        private AbstractProductB AbstractProductB;

        // Constructor

        public Client(AbstractFactory factory)

        {

            AbstractProductB = factory.CreateProductB();

            AbstractProductA = factory.CreateProductA();

        }

  

        public void Run()

        {

            AbstractProductB.Interact(AbstractProductA);

        }

    }

}

2.DoFactory.GangOfFour.Adapter.Structural

      Adapter:

将一个类的接口转换成客户希望的另一个接口,使得原来由于接口不兼容而不能一起工作的那些类可以一起工作。

       适配器(变压器)模式:

把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作。

适配类可以根据参数返还一个合适的实例给客户端。

using System;

namespace DoFactory.GangOfFour.Adapter.Structural

{

    /// 

    /// MainApp startup class for Structural

    /// Adapter Design Pattern.

    /// 

    class MainApp

    {

        /// 

        /// Entry point into console application.

        /// 

        static void Main()

        {

            // Create adapter and place a request

            Target target = new Adapter();

            target.Request();

            // Wait for user

            Console.Read();

        }

    }

    // "Target" 

    class Target

    {

        public virtual void Request()

        {

            Console.WriteLine("Called Target Request()");

        }

    }

    // "Adapter" 

    class Adapter :

 Target

    {

        private Adaptee adaptee = new Adaptee();

        public override void Request()

        {

            // Possibly do some other work

            //   and then call SpecificRequest

            adaptee.SpecificRequest();

        }

    }

    // "Adaptee"

    class Adaptee

    {

        public void SpecificRequest()

        {

            Console.WriteLine("Called SpecificRequest()");

        }

    }

}

3.DoFactory.GangOfFour.Bridge.Structural

     Bridge:

将抽象部分与它的实现部分分离,使之可以独立变化。

      桥梁模式:

将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1