23种设计模式UML图

23种设计模式UML图

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

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

文章目录

1、简单工厂模式

例(计算器)

例(商场促销)

2、策略模式

策略模式UML结构图

例(商场促销)

环境角色:

class CashContext {
	private CashSuper cs;

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

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

策略模式+简单工厂模式

3、装饰模式

装饰模式UML结构图

基本代码展示:

    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()
        {

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

例(InputStream)

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

4、代理模式

代理模式UML结构图

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

·

5、工厂方法模式

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

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

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

工厂方法模式UML结构图

6、原型模式

原型模式UML结构图

img

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

7、外观(门面)模式

外观模式UML结构图

img

8、模板方法模式

例(登录界面实现)

img

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

img

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

建造者模式UML结构图

img

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

img

10、观察者模式

观察者模式UML结构图

img

例(股票行情变动)

img

11、抽象工厂模式

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

img

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

img

抽象工厂模式UML结构图

img

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

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

UML图:

img

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

12、状态模式

状态模式UML结构图

img

例(工作状态)

13、适配器模式

适配器模式UML结构图

14、备忘录模式

备忘录模式UML结构图

img

例(游戏进度备忘)

img

15、组合模式

组合模式UML结构图

16、迭代器模式

迭代器模式UML结构图

17、单例模式

单例模式UML结构图

18、桥接模式

例(不同品牌手机软件的安装)
按品牌分类:

img

按软件实现分类:

img

桥接模式实现:

img

桥接模式UML结构图

img

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

img

19、命令模式

命令模式UML结构图

img

例(烤羊肉串)

img

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

img

20、职责链模式

职责链模式UML结构图

21、中介者模式

结构样例类比

imgimg

中介者模式UML结构图

img

22、享元模式

享元模式UML结构图

img

例(申请网站)

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

UML图:

img

例(五色棋)

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

UML图:

img

23、访问者模式

访问者模式UML结构图
设计模式是一种常用的软件设计方法,用于解决特定问题的方案。在面向对象的软件开发中,有一些经典的设计模式,其中23种是最为常见的。以下是对这23种设计模式的简要UML解释: 1. 简单工厂模式(Simple Factory Pattern):通过一个工厂类来创建不同类型的对象。 2. 工厂方法模式(Factory Method Pattern):定义一个创建对象的接口,由子类来决定具体实例化的对象。 3. 抽象工厂模式(Abstract Factory Pattern):提供一个创建相关或依赖对象家族的接口,而无需指定具体类。 4. 单例模式(Singleton Pattern):确保一个类只有一个实例,并提供全局访问点。 5. 原型模式(Prototype Pattern):通过复制已有对象来创建新对象。 6. 建造者模式(Builder Pattern):将一个复杂对象的构建与其表示分离,使同样的构建过程可以创建不同的表示。 7. 适配器模式(Adapter Pattern):将一个类的接口转换成客户端希望的另一个接口。 8. 桥接模式(Bridge Pattern):将抽象部分与实现部分分离,使它们可以独立变化。 9. 组合模式(Composite Pattern):将对象组合成树形结构以表示"部分-整体"的层次结构。 10. 装饰器模式(Decorator Pattern):动态地给对象添加额外的职责。 11. 外观模式(Facade Pattern):为子系统中的一组接口提供一个统一的接口。 12. 享元模式(Flyweight Pattern):使用共享对象来有效地支持大量细粒度的对象。 13. 代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问。 14. 责任链模式(Chain of Responsibility Pattern):将请求的发送者和接收者解耦,使多个对象都有机会处理这个请求。 15. 命令模式(Command Pattern):将请求封装成一个对象,并且可以用不同的请求来参数化其他对象。 16. 解释器模式(Interpreter Pattern):给定一个语言,定义它的文法的一种表示,并定义一个解释器,通过使用该解释器来解释语言中的句子。 17. 迭代器模式(Iterator Pattern):提供一种方法顺序访问一个容器对象中的各个元素,而又不暴露其内部的表示。 18. 中介者模式(Mediator Pattern):用一个中介对象来封装一系列对象之间的交互。 19. 备忘录模式(Memento Pattern):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 20. 观察者模式(Observer Pattern):定义了一种一对多的依赖关系,使得当一个对象改变状态时,所有依赖它的对象都会被通知并自动更新。 21. 状态模式(State Pattern):允许对象在其内部状态改变时改变它的行为。 22. 策略模式(Strategy Pattern):定义一系列的算法,将每个算法都封装起来,并使它们之间可以互换。 23. 模板方法模式(Template Method Pattern):定义一个操作中的算法的骨架,将一些步骤延迟到子类中实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值