博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
软件设计的23中设计模式
阅读量:6770 次
发布时间:2019-06-26

本文共 1537 字,大约阅读时间需要 5 分钟。

hot3.png

23种模式

第一大类,创建型:

        1. 单例模式(Singleton Pattern) 

        2. 抽象工厂(Abstract Factory) 

        3. 建造者模式(Builder) 

        4. 工厂方法模式(Factory Method) 

        5. 原型模式(Prototype) 

第二大类,结构型:

        6. 适配器模式(Adapter Pattern) 

        7. 桥接模式(Bridge Pattern) 

        8. 装饰模式(Decorator Pattern) 

        9. 组合模式(Composite Pattern) 

       10. 外观模式(Facade Pattern) 

       11. 享元模式(Flyweight Pattern) 

       12. 代理模式(Proxy Pattern) 

       13. 模板方法(Template Method) 

       14. 命令模式(Command Pattern) 

       15. 迭代器模式(Iterator Pattern) 

第三大类,行为型:

       16. 观察者模式(Observer Pattern) 

       17. 解释器模式(Interpreter Pattern) 

       18. 中介者模式(Mediator Pattern) 

       19. 职责链模式(Chain of Responsibility Pattern) 

       20. 备忘录模式(Memento Pattern) 

       21. 策略模式(Strategy Pattern) 

       22. 访问者模式(Visitor Pattern) 

       23. 状态模式(State Pattern)

模式的简单介绍

        1、单例模式:是指确保一个类仅有一个唯一的实例,并且提供一个全局的访问点。

        单例模式应用的场景一般发现在以下条件下:

  (1)资源共享的情况下,避免由于资源操作时导致的性能或损耗等。如日志文件,应用配置。

  (2)控制资源的情况下,方便资源之间的互相通信。如线程池等。

        2、抽象工厂:是指当有多个抽象角色时,使用的一种工厂模式。

        抽象工厂的应用场景中包含:

        (1)一系列互相有关联的产品类,这些产品类有相同的结构;

        (2)一系列实的工厂类,实现由抽象工厂类提供的接口。每个实的工厂类生产一组相关的产品类对象;

        3、建造者模式:将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示;

        应用场景:

    (1)创建一些复杂的对象时,这些对象的内部组成构件间的建造顺序是稳定的,但是对象的内部组成构件面临着复杂的变化。

    (2)要创建的复杂对象的算法,独立于该对象的组成部分,也独立于组成部分的装配方法时。

        4、工厂模式:工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

        应用场景:

        (1)对于某个产品,调用者清楚地知道应该使用哪个具体工厂服务,实例化该具体工厂,生产出具体的产品来;

        (2)只是需要一种产品,而不想知道也不需要知道究竟是哪个工厂为生产的,即最终选用哪个具体工厂的决定权在生产者一方,它们根据当前系统的情况来实例化一个具体的工厂返回给使用者,而这个决策过程这对于使用者来说是透明的。

        5、原型模式:是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。

        解决的问题:

        它主要面对的问题是:“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比较稳定一致的接口。  

转载于:https://my.oschina.net/swchenyuzhe/blog/260928

你可能感兴趣的文章
从零搭建自己的SpringBoot后台框架(十)
查看>>
为什么说 Java 程序员到了必须掌握 Spring Boot 的时候?
查看>>
JavaScript基础——Promise使用指南
查看>>
码栈搭建自动化应用(可视化模式)
查看>>
java编程思想之并发(线程之间的协作)
查看>>
SpringBoot开发案例构建分布式日志处理系统
查看>>
GPUImage之裁剪篇
查看>>
一文教你将 SpringBoot 网站升级为 HTTPS
查看>>
初始Promise/A+规范
查看>>
如何用WebIDE打开并运行CRM Fiori应用
查看>>
iOS自旋锁
查看>>
编译支持iOS的libcurl+OpenSSL库(支持https IPv6)
查看>>
小白入门微服务(3) - 什么是 API gateway
查看>>
路由器和交换机?傻傻分不清楚
查看>>
create-react-app集成Prettier
查看>>
Django 优秀资源大全
查看>>
Python 微服务二
查看>>
RTMP推流--编译RTMPDump、X264包
查看>>
Kotlin一些十分有用的方法(run、let、with、apply、also、repeat)
查看>>
优秀第三方库收集-图表类型
查看>>