首页 > 其他分享 >设计模式笔记

设计模式笔记

时间:2024-05-06 16:14:14浏览次数:23  
标签:笔记 -- 创建 接口 工厂 模式 设计模式

简单记一下方便需要的时候看

设计模式原则

总原则: 开闭原则--对扩展开放,对修改关闭

  1. 单一职责
  2. 里氏替换 -- 任何基类可以出现的地方,子类一定可以出现
  3. 依赖倒置 -- 依赖于抽象而不依赖于具体
  4. 接口隔离 -- 类间的依赖关系应该建立在最小的接口上
  5. 最少知道 -- 只和朋友交谈

首先要减少非必要的耦合(朋友的数量)

  1. 合成复用 -- 多用组合,少用继承

常见的设计模式

有用的链接:图说设计模式

创建型模式

越复杂的设计模式相对于简单的来说耦合肯定更少,但是最简单的情况下它们又有多少差别呢?

简单工厂模式

一个工厂类可以更具不同的参数创建不同的类,这些被创建的类有共同的父类,工厂类包含所有创建逻辑,也就是说如果有新的类加入需要修改工厂类.

工厂模式

一个抽象工厂类负责定义创建的接口,具体创建方法由工厂子类负责.相比于简单工厂模式如果有新的类要加入就不会修改某个具体类,更符合开闭原则,缺点就是会导致类的数量增加,每个增加一个类要增加一个对应的工厂类.

其实就是可以减少耦合的方式.

抽象工厂模式

我已经不想了解它们的区别和具体定义了, 知道他们是工厂模式就行, 工厂模式就是把创建使用给解耦

还是简单写下把,工厂模式是一个工厂类负责一个产品,抽象工厂模式是一个工厂类负责一簇产品

单例模式

确保一个类只有一个实例,通过提供一个全局接口实现.

结构型模式

适配器模式

将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。

行为型模式

观察者模式

目标提供 attach 和 detach, 观察者可以通过attach方法订阅通知,当目标状态发生变化目标会通知所有订阅者

标签:笔记,--,创建,接口,工厂,模式,设计模式
From: https://www.cnblogs.com/tggpx/p/18175179

相关文章

  • 整体二分学习笔记
    最近准备学数据结构乱搞,接下来学k-dtree大致介绍可以使用整体二分解决的题目需要满足以下性质:1.询问的答案具有可二分性2.修改对判定答案的贡献互相独立,修改之间互不影响效果3.修改如果对判定答案有贡献,则贡献为一确定的与判定标准无关的值4.贡献满足交换律,结合律,具有可加......
  • [转帖]Oracle Exadata 学习笔记之核心特性Part1
    https://www.cnblogs.com/jyzhao/p/12257649.html#2 近年来,国内众多厂商都有一体机的产品,不过更多都是围绕硬件本身的堆砌和优化,那么这些产品和Oracle一体机最大的区别在哪里呢?最近读了李亚的《OracleExadata技术详解》,系统的了解了Exadata的一些核心特性,我个人认为这些特......
  • MyBatis笔记2024-05-06
    MyBatis笔记第1章--MyBatis日志管理与动态SQL日志门面(统一调用接口2两种)与实现(常见:log4j、logback、java.util.logging...)LoggingFacadeForJavaApacheCommons-logs增加依赖:ch.qos.logbackMyBatis会自动调用logback配置文件:logback.xml固定文件名配置内容:指定类,输出格式,日志......
  • H.264学习笔记——基本概念
    1.基本概念frame:帧,相当于一幅图像,包含一个亮度矩阵和两个色度矩阵。field:场,一帧图像,通过隔行扫描得到奇偶两场,分别称为顶场和底场或奇场和偶场。macroblock/MB:宏块,H.264中处理(预测、变换、量化)的基本单元,大小16*16个像素。slicegroup:条带组,每一帧/场图像中,按照光栅扫面的顺......
  • H.264学习笔记——相关概念
    基本概念frame:帧,相当于一幅图像,包含一个亮度矩阵和两个色度矩阵。field:场,一帧图像,通过隔行扫描得到奇偶两场,分别称为顶场和底场或奇场和偶场。macroblock/MB:宏块,H.264中处理(预测、变换、量化)的基本单元,大小16*16个像素。slicegroup:条带组,每一帧/场图像中,按照光栅扫面的顺序......
  • Razavi - RF Microelectronics的笔记 - Differential Output Current
    Onpage400,example6.26,weareaskedtoanalyzeadouble-balancedcircuitonits\(IP_2\).Idon'tgetwheredoes(6.127)comefrom.Sincethere'snoexplanationon(6.127),Iguessthisequationisobvious.SoIreducetheproblemandtry......
  • C++学习笔记
    参考https://github.com/weidongshan/cpp_projects《C++PrimerPlus》C++StandardsSupportinGCCGCCGCC中有libstdc++库的实现LLVMLLVM中有libc++库的实现面向对象编程的3大特点封装继承多态struct声明的类里的成员都是publicclass声明的类的成员都是pr......
  • TinyRender学习笔记
    通过手写软光栅渲染器加深对计算机图形学基本原理的理解,并练习C++面向对象程序设计。github链接:blackbird2003/blackbirdTinyRenderer(github.com)该项目主要参考Home·ssloy/tinyrendererWiki(github.com)编写推荐先过一下GAMES101Lesson0GettingStartedUsingTGAi......
  • 《自动机理论、语言和计算导论》阅读笔记:p402-p427
    《自动机理论、语言和计算导论》学习第13天,p402-P427总结,总计26页。一、技术总结无。二、英语总结1.eludee--,assimilatedformofex-(out,away)+ludere(toplay,seeludicrous)。vt.ifsthyouwanteludesyou,youdonotsucceedinachievingit。p426,Mor......
  • sqlserver笔记
    明确的性能低的定义:在现有资源还没有达到最大吞吐量的前提下,系统如果不能满足合理的预期表现。最小化每个SQL的响应时间;合理增加吞吐量;减少网络延时优化磁盘IO、CPU能够协调、平衡的运行,合理的响应外部的请求,实现资源利用的最大化。影响性能的常见因素:1.数据库结构的设计--了解......