当前位置: 首页 > news >正文

设计模式的分类

设计模式一般分为三类:创建型模式、结构型模式、行为型模式。

创建型模式

创建型模式简单来说就是用来创建对象的。一共有五种:单例模式、建造者模式、工厂方法模式、抽象工厂模式、原型模式。
单例模式 :确保某一个类只有一个实例,并且提供一个全局访问点。
建造者模式 : 用来创建复杂的复合对象。
工厂方法模式 :让子类来决定要创建哪个对象。
抽象工厂模式 :创建多个产品族中的产品对象。
原型模式 :通过复制原型来创建新对象。

行为型模式

行为型模式主要是描述类或者对象是怎样交互和怎样分配职责的。一共有十一种:策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
策略模式 :封装不同的算法,算法之间能互相替换。
状态模式 :根据不同的状态做出不同的行为。
责任链模式 :将事件沿着链去处理。
观察者模式 :状态发生改变时通知观察者,一对多的关系。
模板方法模式 :定义一套流程模板,根据需要实现模板中的操作。
迭代器模式 :提供一种方法顺序访问一个聚合对象中的各个元素。
备忘录模式 :保存对象的状态,在需要时进行恢复。
访问者模式 :稳定数据结构中,定义新的操作行为。
中介者模式 :将网状结构转变为星型结构,所有行为都通过中介。
解释器模式 :定义语法,并对其进行解释。
命令模式 :将请求封装成命令,并记录下来,能够撤销与重做。

结构型模式

结构型模式主要是用于处理类或者对象的组合。一共有七种:适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
代理模式 :控制客户端对对象的访问。
组合模式 :将整体与局部(树形结构)进行递归组合,让客户端能够以一种的方式对其进行处理。
适配器模式 :将原来不兼容的两个类融合在一起。
装饰者模式 :为对象添加新功能。
享元模式 :使用对象池来减少重复对象的创建。
外观模式 :对外提供一个统一的接口用来访问子系统。
桥接模式 :将两个能够独立变化的部分分离开来。

相关文章:

  • 盲并遗忘着-利用应用交付透析大型网站日志
  • 请手写一下单例模式?
  • ArrayList
  • python 遗传算法精简版
  • B-树和B+树区别
  • 红黑树
  • 负载均衡之基于L3/4负载
  • 跳表
  • 关于CookieUtile的相关代码
  • iOS_15_通过代码自己定义cell_微博UI
  • 排序
  • 哈希冲突解决方法
  • Activiti的引擎与引擎配置对象
  • dfs和bfs
  • ajax done和always区别
  • 0x05 Python数据分析,Anaconda八斩刀
  • ComponentOne 2017 V2版本正式发布
  • ERLANG 网工修炼笔记 ---- UDP
  • Hexo+码云+git快速搭建免费的静态Blog
  • IOS评论框不贴底(ios12新bug)
  • Magento 1.x 中文订单打印乱码
  • Python 反序列化安全问题(二)
  • Twitter赢在开放,三年创造奇迹
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 简单易用的leetcode开发测试工具(npm)
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​TypeScript都不会用,也敢说会前端?
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #pragma multi_compile #pragma shader_feature
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (145)光线追踪距离场柔和阴影
  • (2015)JS ES6 必知的十个 特性
  • (C#)一个最简单的链表类
  • (C++)八皇后问题
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (算法二)滑动窗口
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)c++ std::pair 与 std::make
  • (转)http-server应用
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET 药厂业务系统 CPU爆高分析
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .NET企业级应用架构设计系列之结尾篇
  • @Autowired多个相同类型bean装配问题
  • @ModelAttribute 注解
  • @我的前任是个极品 微博分析
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]