外观 模式
装饰者模式
装饰者模式 咖啡案例引入 1.咖啡种类,有意大利咖啡(Espresso),ShortBlack,美式咖啡(LongBlack),无因咖啡(Decaf)。 2.调料,Milk,Soy(豆浆),Chocolate(巧克力)。 3.要求再扩展新的咖啡种类时,具有良好的扩展性,改动方便,维护方便。 4.客户 ......
模板方法模式
在接口中定义算法步骤,子类实现算法步骤。 拉起容器时既可以通过docker,也可以通过containerd。 package main import "fmt" type containerHandle struct { c containerHandler } type containerHand ......
迭代器模式
迭代器能在不暴露复杂数据结构内部细节的情况下遍历其中所有的元素。 package main import "fmt" type Iterator interface { hasNext() bool getNext() *User } type Collection interface { crea ......
设计模式7大原则
开闭原则对扩展开放,对修改关闭。 依赖倒置原则面向接口编程。 单一职责原则一个类、接口、方法只负责一项职责。 接口隔离原则接口中方法尽量少。 迪米特法则尽量降低类与类之间的耦合。 里氏替换原则引用父类的地方能使用其子类。 合成复用原则尽量使用合成/聚合的方式,不是使用继承。 ......
使用设计模式改写if/else或switch/case语句
在写代码的时候,经常会用到if/else语句或者switch/case语句。虽然很省事,但是没有体现到java的封装、继承、多态等特性。没有用到java的面向对象编程的精髓。 比如这种if/else语句: String str = "菠萝"; if ("苹果".equals(str)) { Syst ......
看懂FTP的主动和被动模式
FTP只通过TCP连接,没有用于FTP的UDP组件,FTP不同于其他服务的是它使用了两个端口,一个数据端口和一个命令端口(或称为控制端口)。通常21端口是命令端口,20端口是数据端口。当混入主动/被动模式的概念时,数据端口就有可能不是20了。更多技术干货详见www.linuxprobe.com ......
从DevOps实践落地的角度谈谈“流程”和“规范"的反模式
最近在经历的一些事情,让我突发灵感,觉得要写点关于DevOps体系建设过程中的“流程规范”,记录下来。 如何解读"流程规范" 谈到DevOps落地,无一例外都会提“流程规范“,我想没有人会反对,甚至会”不放在眼里“,因为概念本身没有什么晦涩难懂。可是一到落地,好像就是另外一番场景,“一地鸡毛”,“形 ......
spring依赖注入单例模式下(默认都是单例),类变量(实例变量)线程安全问题
java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。Java的变量类型有: 成员变量类中的变量(独立于方法之外的变量) 局部变量类的方法中的变量。而 java类的成员变量又有俩种: 静态变量(类变量): 独立于方法之外的变量,用 static 修饰。 实例变量: 独立于方法之外 ......
iOS开发实战-仿小红书App开发-2-项目总体设计,TabBarController,启动页,深色模式
1.新建一个LittlePink项目 完成一些配置. 2.在Main中新增一个Tab Bar Controller. 把箭头给TbaBar Controller. 除了原有的一个ViewController外,再拉两个ViewController,使Main中共有5个ViewController. ......
工厂模式之工厂方法模式
大家好,欢迎来到程序视点! 前言 在上一节的简单工厂模式中,我们知道简单工厂所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。 也就是说,类的创建依赖工厂类,如果想要拓展程序(添加新的类),必须对工厂类进行修改。这违背了开闭原则。 从设计角度考虑,有一定的问题,如何解决? 既 ......
设计模式 C++
(设计模式) (李建忠 C++) 23种设计模式 组件协作 模板方法 父类中定义组件(函数)的调用流程,每个组件使用虚函数进行实现,然后子类中可以重写父类中虚函数的实现。 如果我们发现一个算法的组件(函数)的调用流程都是一样的,但是步骤中的各个组件的实现可能有所差异,此时会使用模板方法。 【注】稳定 ......
less-匹配模式
//匹配模式 有点像函数重载 .arrow { width: 0; height: 0; overflow: hidden; border-width: 10px; border-color: transparent transparent limegreen transparent; border ......
软件设计模式系列之六——单例模式
单例模式(Singleton Pattern)是一种常见的创建型设计模式,其主要目的是确保一个类只有一个实例,并提供一个全局访问点来获取该实例。这意味着无论何时何地,只要需要该类的实例,都会返回同一个实例,而不是创建多个相同的实例。 ......
单例模式
Analyser* Analyser::Instance() { static QMutex mutex; static QScopedPointer<Analyser> inst; if (Q_UNLIKELY(!inst)) { mutex.lock(); if (!inst) { inst.r ......
Day_9.15_单例设计模式
单例设计模式 23种 设计模式概述 何为单例模式 实现思路 单例模式的两种实现方式 < 饿汉式 < 懒汉式 饿汉式vs懒汉式 main() ......
桥接模式
桥接模式 案例引入 对不同的手机类型和不同品牌实现操作(如开机,关机,上网,打电话等)。 如手机的类型有折叠式,直立式等。手机品牌有华为,小米,vivo等。 传统方式实现案例UML图 传统方式问题分析 1.扩展性问题,如果再增加手机的样式,就需要增加各个品牌手机的类,同样我们如果增加一个手机品牌,也 ......
常用设计模式
一、工厂模式 + 单例模式 使用工厂模式来创建对象,通过单例模式来保证该工厂只有一个实例,从而减少创建对象时的开销。 首先,创建一个工厂类,该类使用单例模式来保证只有一个实例,该实例负责创建对象。然后,根据需要创建多个工厂方法,每个方法用于创建不同的对象。 class SingletonFactor ......
软件设计模式系列之五——建造者模式
建造者模式是一种对象创建型设计模式,它将一个复杂对象的构建过程与其表示分离。这意味着你可以使用相同的构建过程来创建不同类型的对象,而不必关心每个对象的内部细节。 ......
2023-04-26-微信安全模式下消息解析
在微信公众号的使用过程中,为了提高信息传输的安全性,可以在服务器配置中将消息加解密模式指定为安全模式。 启用安全模式后,公众号主动调用API的情况并不会受影响,只有被动回复用户的消息时才需要对消息进行加解密。 官方提供了5种开发语言的示例代码,参照官方给的C++示例代码,本文给出go语言的解密实现: ......
JointJs - Link 的路由模式和连线类型
路由模式 title:(Link - routers) link:(https://resources.jointjs.com/docs/jointjs/v3.7/joint.html#routers) cover:(https://uploads-ssl.webflow.com/63061d4ee ......
Databend 玩转 local 模式
目前开发者们需要尝鲜databend, 可以选择使用databend cloud 或者按官方文档部署 databend 服务。 由于databend架构有三层,因此部署databend服务一般需要启动 databend-query, databend-meta , minio 三个进程,同时需要修改 ......
抽象工厂模式:创建对象的工厂中的工厂
在软件开发中,对象的创建是一个常见而重要的任务。不同的对象需要不同的创建方式,而且这些对象可能存在复杂的关联关系。为了解决这些问题,设计模式中有一个特别有用的创建型模式,即抽象工厂模式。本文将介绍抽象工厂模式的概念、使用场景以及示例代码。 1. 设计模式背景 设计模式是一种用于解决常见问题的经过验证 ......
责任链模式的高级用法:多级校验、工作流,这样写代码才足够优雅!
参数校验 https://mp.weixin.qq.com/s?__biz=MzkwOTAyMTY2NA==&mid=2247493532&idx=1&sn=a4f21e20103eb53c9328d08b1d6af4fc&chksm=c0c3bf13f7b436059db439d9f80b2771 ......
设计模式之:1单例模式
1 单例模式 1.1 引言 单例模式就是保证在整个应用程序的生命周期中,在任何时刻,被指定的类只有一个实例,并为客户程序提供一个获取该实例的全局访问点。 1.2 经典模式 public class Singleton { private static Singleton instance; priv ......
工厂方法模式
当设计应用程序时,对象的创建过程是一个关键的考虑因素。工厂方法模式(Factory Method Pattern)是一种创建型设计模式,用于解决对象的创建与客户端代码之间的紧耦合问题。通过引入一个工厂接口和多个具体工厂类,工厂方法模式将对象的创建过程抽象化,使得客户端代码无需直接实例化对象,而是通过 ......
Python 队列queue与多线程组合(生产者+消费者模式)
参考 * https://www.jianshu.com/p/8a9af2e7e1b4 * https://www.kancloud.cn/noahs/python/956687 程序 import threading import time import queue def producer(na ......
Redis哨兵模式详解
目录 Redis哨兵模式定义为什么需要Redis哨兵模式?Redis哨兵模式功能Redis哨兵模式原理Redis哨兵模式的优缺点Redis哨兵模式定义Redis哨兵模式是是一个管理多个 Redis 实例的工具,它可以实现对 Redis 的监控、通知、自动故障转移,是Redis实现高可用 的实现方案。 ......