常用设计模式

一、设计模式的定义

指的是工程师们根据自然界的规律,或者实际生产生活中总结的解决设计问题的经验。


二、设计模式依靠的编程思路

(一)利用继承来拓展不同的具体子类

不同的子类对象可以被相同的父类引用变量来指向。
每个子类对同一个抽象方法的实现不一样,就能适应不同的场景。

(二)扩展功能还可以是将自定义类作为某个类的成员变量。

作为成员变量后,就能在构造对象时传入外部的对象,实现功能。

(三)把多个对象放在一个集合里,方便遍历,调用相同方法。

一般事件注册和通知模式,观察者模式都是这样,把对象放在一个集合里,当事件触发,就遍历集合,调用每个对象的通知方法。


三、常见的设计模式

(一)工厂模式

思路:定义一个工厂类,传入不同的参数,返回不同的子类对象。

注意:只不过子类对象都用相同的父类引用变量来存放。


(二)模板模式

思路:定义抽象模板类,用户只要继承模板类,实现内部抽象方法,就能扩展新的场景。

用法:一般用来扩展数据库的连接操作,因为每个数据库的操作语句不一样,但是系统调用接口可以保持一样。


(三)观察者模式

思路:定义一个观察者类,它有一个集合存放所有的通知目标对象,还有一个通知方法。

实际用法:通知目标注册给观察者的集合后,当观察者发现事件发生,就调用通知方法,遍历集合,调用所有通知对象的通知方法。


(四)适配器模式

背景:有一些事件监听接口,因为抽象方法太多,使用时不得不实现每个抽象监听方法。

思路:适配器是继承监听接口,把所有抽象方法实现,但是内容为空。

用法:使用时用户只需要继承适配器类,重写想要监听的方法,不需要重写所有的方法。


(五)单例模式

介绍:指的是每次获取的对象都是同一个。

实现思路:
1、把构造方法私有化,不准外部调用。

2、生成一个唯一的对象,用静态变量指向,确保不丢失。

3、用一个静态方法给外部调用,返回生成的唯一的对象。

相关推荐

  1. 设计模式

    2024-06-06 05:00:04       56 阅读
  2. 设计模式

    2024-06-06 05:00:04       55 阅读
  3. 设计模式

    2024-06-06 05:00:04       41 阅读
  4. 设计模式

    2024-06-06 05:00:04       35 阅读
  5. 设计模式

    2024-06-06 05:00:04       24 阅读
  6. 设计模式

    2024-06-06 05:00:04       32 阅读
  7. 设计模式

    2024-06-06 05:00:04       33 阅读
  8. 设计模式

    2024-06-06 05:00:04       24 阅读
  9. 设计模式

    2024-06-06 05:00:04       22 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-06 05:00:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-06 05:00:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-06 05:00:04       82 阅读
  4. Python语言-面向对象

    2024-06-06 05:00:04       91 阅读

热门阅读

  1. 层出不穷的大模型产品,你怎么选?【模板】

    2024-06-06 05:00:04       31 阅读
  2. HarmonyOs开发:关系型数据库封装之增删改查

    2024-06-06 05:00:04       31 阅读
  3. Vue基础(3)监听数据

    2024-06-06 05:00:04       30 阅读
  4. php fpdf使用记录

    2024-06-06 05:00:04       27 阅读
  5. 力扣1438.绝对差不超过限制的最长连续子数组

    2024-06-06 05:00:04       33 阅读
  6. 【面试题-011】如何设计一个三高系统

    2024-06-06 05:00:04       29 阅读
  7. 动态规划详细解释

    2024-06-06 05:00:04       32 阅读
  8. PHP编程入门:揭开Web开发的神秘面纱

    2024-06-06 05:00:04       25 阅读
  9. Android音频焦点

    2024-06-06 05:00:04       28 阅读
  10. go模拟经典面试题

    2024-06-06 05:00:04       25 阅读
  11. foreach、for in和for of之间区别?

    2024-06-06 05:00:04       29 阅读
  12. 用Python实现一个Lisp解析器

    2024-06-06 05:00:04       30 阅读
  13. npm有哪些插件包??

    2024-06-06 05:00:04       33 阅读