23种设计模式UML图

23种设计模式UML图

总体来说基本的23种设计模式分为三大类:

创建型模式(5种):工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式(7种):适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

文章目录

  • 23种设计模式UML图
      • 总体来说基本的23种设计模式分为三大类:
    • ==1、简单工厂模式==
        • 例(计算器)
        • 例(商场促销)
    • ==2、策略模式==
        • 策略模式UML结构图
        • 例(商场促销)
      • ==策略模式+简单工厂模式==
    • ==3、装饰模式==
        • 装饰模式UML结构图
        • 例(给人搭配不同的服饰)(装饰模式做法)
        • 例(InputStream)
        • 例(OutputStream)(新增了自定义的装饰器EncryptedOutputStream)
    • ==4、代理模式==
        • 代理模式UML结构图
        • 例(为别人做嫁衣——请代理送礼物)
    • ==5、工厂方法模式==
      • ==简单工厂 VS 工厂方法(以计算器为例)==
        • 简单工厂UML结构图(以计算器为例)
        • 工厂方法UML结构图(以计算器为例)
        • 工厂方法模式UML结构图
    • ==6、原型模式==
        • 原型模式UML结构图
        • 例(订单处理系统(深复制)——Java)
    • ==7、外观(门面)模式==
        • 外观模式UML结构图
    • ==8、模板方法模式==
        • 例(登录界面实现)
        • 例(通过JDBC方式连接数据库)
    • ==9、建造者(生成器)模式==
        • 建造者模式UML结构图
        • 例(文件备份)(文件头、主体、结尾):
    • ==10、观察者模式==
        • 观察者模式UML结构图
        • 例(股票行情变动)
    • ==11、抽象工厂模式==
        • 例(工厂方法模式下的数据库访问UML图)
        • 例(抽象工厂模式下的数据库访问UML图)
        • 抽象工厂模式UML结构图
        • 利用简单工厂改进抽象工厂(以选择数据库为例)
        • 例(反射+配置文件+简单工厂改造后的抽象工厂实现数据库访问)
    • ==12、状态模式==
        • 状态模式UML结构图
        • 例(工作状态)
    • ==13、适配器模式==
        • 适配器模式UML结构图
    • ==14、备忘录模式==
        • 备忘录模式UML结构图
        • 例(游戏进度备忘)
    • ==15、组合模式==
        • 组合模式UML结构图
    • ==16、迭代器模式==
        • 迭代器模式UML结构图
    • ==17、单例模式==
        • 单例模式UML结构图
    • ==18、桥接模式==
        • 例(不同品牌手机软件的安装)
          • 按品牌分类:
          • 按软件实现分类:
          • 桥接模式实现:
        • 桥接模式UML结构图
          • 全部采用继承,不使用桥接模式的UML图(如果继续扩展消息类型或者发送方式将会十分繁琐):
          • 例:继续添加发送手机消息的处理方式(这个时候代码结构就逐渐开始变得复杂):
          • 桥接模式实现:
    • ==19、命令模式==
        • 命令模式UML结构图
        • 例(烤羊肉串)
        • 例(计算器——允许执行undo与redo)
    • ==20、职责链模式==
        • 职责链模式UML结构图
    • ==21、中介者模式==
        • 结构样例类比
        • 中介者模式UML结构图
    • ==22、享元模式==
        • 享元模式UML结构图
        • 例(申请网站)
        • 例(五色棋)
    • ==23、访问者模式==
        • 访问者模式UML结构图

1、简单工厂模式

例(计算器)

23种设计模式UML图_第1张图片

例(商场促销)

23种设计模式UML图_第2张图片

2、策略模式

策略模式UML结构图

23种设计模式UML图_第3张图片

例(商场促销)

23种设计模式UML图_第4张图片

环境角色:

class CashContext {
	private CashSuper cs;

	public CashContext(CashSuper csuper) {
		this.cs = csuper;
	}

	public double GetResult(double money) {
		return cs.acceptCash(money);
	}
}

策略模式+简单工厂模式

23种设计模式UML图_第5张图片

3、装饰模式

装饰模式UML结构图

23种设计模式UML图_第6张图片

基本代码展示:

    abstract class Component
    {
        public abstract void Operation();
    }

    class ConcreteComponent : Component
    {
        public override void Operation()
        {
            Console.WriteLine("具体对象的操作");
        }
    }

    abstract class Decorator : Component
    {
        protected Component component;

        public void SetComponent(Component component)
        {
            this.component = component;
        }

        public override void Operation()
        {
            if (component != null)
            {
                component.Operation();
            }
        }
    }

    class ConcreteDecoratorA : Decorator
    {
        private string addedState;

        public override void Operation()
        {
            base.Operation();
            addedState = "New State";
            Console.WriteLine("具体装饰对象A的操作");
        }
    }

    class ConcreteDecoratorB : Decorator
    {

        public override void Operation()
        {
            base.Operation();
            AddedBehavior();
            Console.WriteLine("具体装饰对象B的操作");
        }

        private void AddedBehavior()
        {

        }
    }

例(给人搭配不同的服饰)(装饰模式做法)

23种设计模式UML图_第7张图片

例(InputStream)

23种设计模式UML图_第8张图片

例(OutputStream)(新增了自定义的装饰器EncryptedOutputStream)

23种设计模式UML图_第9张图片

4、代理模式

代理模式UML结构图

23种设计模式UML图_第10张图片

例(为别人做嫁衣——请代理送礼物)

23种设计模式UML图_第11张图片·

5、工厂方法模式

简单工厂 VS 工厂方法(以计算器为例)

简单工厂UML结构图(以计算器为例)

23种设计模式UML图_第12张图片

工厂方法UML结构图(以计算器为例)

23种设计模式UML图_第13张图片

工厂方法模式UML结构图

23种设计模式UML图_第14张图片

6、原型模式

原型模式UML结构图

23种设计模式UML图_第15张图片

例(订单处理系统(深复制)——Java)

23种设计模式UML图_第16张图片

7、外观(门面)模式

外观模式UML结构图

23种设计模式UML图_第17张图片

8、模板方法模式

例(登录界面实现)

23种设计模式UML图_第18张图片

例(通过JDBC方式连接数据库)

23种设计模式UML图_第19张图片

9、建造者(生成器)模式

建造者模式UML结构图

23种设计模式UML图_第20张图片

例(文件备份)(文件头、主体、结尾):

23种设计模式UML图_第21张图片

10、观察者模式

观察者模式UML结构图

23种设计模式UML图_第22张图片

23种设计模式UML图_第23张图片

例(股票行情变动)

23种设计模式UML图_第24张图片

11、抽象工厂模式

例(工厂方法模式下的数据库访问UML图)

23种设计模式UML图_第25张图片

例(抽象工厂模式下的数据库访问UML图)

23种设计模式UML图_第26张图片

抽象工厂模式UML结构图

23种设计模式UML图_第27张图片

利用简单工厂改进抽象工厂(以选择数据库为例)

去除IFactory、SqlserverFactory和AccessFactory三个工厂类,取而代之的是DataAccess类,用一个简单工厂模式来实现:

UML图:

23种设计模式UML图_第28张图片

例(反射+配置文件+简单工厂改造后的抽象工厂实现数据库访问)

23种设计模式UML图_第29张图片

12、状态模式

状态模式UML结构图

23种设计模式UML图_第30张图片

例(工作状态)

23种设计模式UML图_第31张图片

13、适配器模式

适配器模式UML结构图

23种设计模式UML图_第32张图片

14、备忘录模式

备忘录模式UML结构图

23种设计模式UML图_第33张图片

例(游戏进度备忘)

23种设计模式UML图_第34张图片

15、组合模式

组合模式UML结构图

23种设计模式UML图_第35张图片

16、迭代器模式

迭代器模式UML结构图

23种设计模式UML图_第36张图片

17、单例模式

单例模式UML结构图

23种设计模式UML图_第37张图片

18、桥接模式

例(不同品牌手机软件的安装)

按品牌分类:

23种设计模式UML图_第38张图片

按软件实现分类:

23种设计模式UML图_第39张图片

桥接模式实现:

23种设计模式UML图_第40张图片

桥接模式UML结构图

23种设计模式UML图_第41张图片

全部采用继承,不使用桥接模式的UML图(如果继续扩展消息类型或者发送方式将会十分繁琐):
23种设计模式UML图_第42张图片
例:继续添加发送手机消息的处理方式(这个时候代码结构就逐渐开始变得复杂):
23种设计模式UML图_第43张图片
桥接模式实现:

23种设计模式UML图_第44张图片

19、命令模式

命令模式UML结构图

23种设计模式UML图_第45张图片

例(烤羊肉串)

23种设计模式UML图_第46张图片

例(计算器——允许执行undo与redo)

23种设计模式UML图_第47张图片

20、职责链模式

职责链模式UML结构图

23种设计模式UML图_第48张图片

21、中介者模式

结构样例类比

23种设计模式UML图_第49张图片23种设计模式UML图_第50张图片

中介者模式UML结构图

23种设计模式UML图_第51张图片

22、享元模式

享元模式UML结构图

23种设计模式UML图_第52张图片

例(申请网站)

(一组网站的结构是类似的,我们看成是可共享的部分(内部状态),而每个网站的用户是不同的,不可共享的,是外部状态):

UML图:

23种设计模式UML图_第53张图片

例(五色棋)

(棋子的颜色是类似的,只有固定的几种,可以看成是可共享的(内部状态),但是棋子的位置是不确定的,是不可共享的(外部状态))

UML图:

23种设计模式UML图_第54张图片

23、访问者模式

访问者模式UML结构图

23种设计模式UML图_第55张图片

你可能感兴趣的:(设计模式)