设计模式之命令模式
命令模式的类图其中的角色有:Client 客户端。只依赖于调用者Invoker、接收者Receiver、以及Command(网上找的图片这里没有画出来),不用关注接收者如何执行命令,只需要告诉调用者需要执行什么命令,以及会用到什么接收者去执行,但是这里得注意,虽然类图中同时依赖了接收者,但是实践中,通常...
2024-01-10设计模式之组合模式
定义将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。UML类图组合模式有两种不同的实现,一种是安全模式的组合模式,叶子节点没有实现树枝节点独有的方法,UML图为:另一种是透明模式的组合模式,将树枝节点的方法定义在了节点抽象...
2024-01-10设计模式之原型模式
熟悉JavaScript的同学对于原型的概念可能并不陌生,今天要说的原型模式和这个差不多是类似的,但是还是存在一些不同。原型模式的核心思想是,通过拷贝指定的原型实例(对象),创建跟该对象一样的新对象。简单理解就是克隆指定对象。所有的原型类都必须有一个通用的接口,使得即使在对象所属的...
2024-01-10设计模式之状态模式
定义Allow an object to alter its behavior when its internal state changes.The object will appear to change its class.(当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。)UML类图角色解释Context,环境,封装各种状态的变化,并且向外部提供所有需要的接口,使得外部不用关注状态的变化,只需要...
2024-01-10设计模式之访问者模式
定义Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing the classes of the elements on which it operates. (封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。)UML类图角色:Object...
2024-01-10设计模式之观察者模式
定义Define a one-to-many dependency between objects so that when one object changes state,all its dependents are notified and updated automatically.(定义对象间一种一对多的依赖关系,使得每 当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。)类图角色Subject 被观察者接口,定义添加观察者,减少观察...
2024-01-10设计模式之装饰器模式
定义Attach additional responsibilities to an object dynamically keeping the same interface.Decorators provide a flexible alternative to subclassing for extending functionality.(动态地给一个对象添加一些额外的职责。 就增加功能来说,装饰模式相比生成子类更为灵活UML类图角色Component 抽象构件,就是装饰器与被装饰类共有的抽象。C...
2024-01-10C++设计模式之代理模式
前言青春总是那样,逝去了才开始回味;大学生活也是在不经意间就溜走了,现在上班的时候,偶尔还会怀念大学时,大家在一起玩游戏的时光。大学喜欢玩游戏,但是可悲的校园网,速度能把人逼疯了;还好,后来搞了一个游戏代理,总算能勉勉强强的玩了两年。时至今日,敲起键盘写设计模式的...
2024-01-10C++设计模式之策略模式
前言刚刚加班回来;哎,公司规定平时加班只有10块钱的餐补;星期六和星期天加班,只给串休假;在国家规定的节假日按照3倍工资发放。那么对于这么多的计算加班费的方法,公司的OA系统是如何进行做的呢?这就要说到今天我这里总结的策略设计模式了。策略模式在GOF的《设计模式:可复用面向对...
2024-01-10C++设计模式之享元模式
前言无聊的时候,也去QQ游戏大厅玩五子棋或者象棋;作为程序员,看到一个产品,总要去想想它是怎么设计的,怎么完成的,我想这个是所有程序员都会做的事情吧(强迫症???)。有的时候,想完了,还要做一个DEMO出来,才能体现自己的NB,然后还有点小成就感。在玩五子棋或象棋的时候,我...
2024-01-10C++设计模式之工厂模式
由遇到的问题引出工厂模式在面向对象系统设计中经常可以遇到以下的两类问题:◆ 1.为了提高内聚(Cohesion)和松耦合(Coupling),我们经常会抽象出一些类的公共接口以形成抽象基类或者接口。这样我们可以通过声明一个指向基类的指针来指向实际的子类实现,达到了多态的目的。这里很容易出现...
2024-01-10C++设计模式之访问者模式
前言这是23+1(简单工厂模式)之中的最后一个了——访问者模式。访问者模式也是一个比较麻烦的设计模式。我也没有实战经验,对于访问者模式的理解完全来自GOF的《设计模式:可复用面向对象软件的基础》,而这篇文章就是根据对这本书的理解而写出来的。在读《设计模式:可复用面向对象软件的...
2024-01-10老生常谈设计模式之动态代理
一、动态代理概念动态代理分为JDK动态代理和cglib动态代理两种方式。jdk动态代理是由Java内部的反射机制来实现的,cglib动态代理底层则是借助asm来实现的。总的来说,反射机制在生成类的过程中比较高效,而asm在生成类之后的相关执行过程中比较高效(可以通过将asm生成的类进行缓存,这样解决asm...
2024-01-10C++设计模式之中介者模式
前言我们都知道,这个国际政治是一门很深的学问,不玩政治的人是搞不懂的。那么多的国家,国家之间的关系又及其复杂;就好比现在,美国和中国有经济利益关系,美国又和日本有盟友关系,朝鲜又和中国有说不清道不明的关系;这些复杂的关系,稍微处理不好,就可能引发局部战争,更有可能...
2024-01-10C++设计模式之职责链模式
前言最近心情很差,因为生活,因为工作;所以想请几天假去丽江玩玩。就向项目经理提交了休假申请,我的项目经理向项目主管提交了我的休假申请,项目主管向部门经理提交了我的休假申请;最后,部门经理同意了我的休假申请。是的,一个简单的休假申请,需要这么复杂的流程,这也是一个公...
2024-01-10JAVA设计模式之策略模式
策略模式的定义: 定义一组算法,将每个算法都封装起来,使得它们之间可以相互替换。策略模式让算法独立于调用它的客户端而独立变化。 大白话: 我清楚知道自己身上有几把武器(策略),我会根据不同的情况使用不同的武器(根据情况,切换策略)。 游戏中...
2024-01-10C语言 设计模式之访问者模式
C语言访问者模式概要:访问者模式,听上去复杂一些。但是,这种模式用简单的一句话说,就是不同的人对不同的事物有不同的感觉。比如说吧,豆腐可以做成麻辣豆腐,也可以做成臭豆腐。可是,不同的地方的人未必都喜欢这两种豆腐。四川的朋友可能更喜欢辣豆腐,江浙的人就可能对臭豆腐更喜...
2024-01-10JS设计模式之单例模式(一)
命名空间单例模式是JavaScript中最常见的一种模式,通过这种模式可以为我们提供一个命名空间,例如jQuery库的命名空间为jQuery或$。命名空间的使用是为了让代码更加整洁,在多人协作开发的情况下,不同的人定义的变量很有可能重复,此时就需要使用命名空间来约束每个人定义的变量,使相同名称...
2024-01-10C#设计模式之单例模式实例讲解
前言最近开始花点心思研究下设计模式,主要还是让自己写的代码可重用性高、保证代码可靠性。所谓设计模式,我找了下定义:是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模...
2024-01-10详解JAVA设计模式之模板模式
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。介绍意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变...
2024-01-10CSS设计模式之ITCSS的介绍
1、ITCSS和SMACSS其实很像,SMACSS是对CSS做分类处理,而ITCSS是对CSS做分层处理。2、分层是纵向的,从上往下,层层关联的。分层:七层与SMACSS区别:层次分得更细我们可以看到最上层是 Settings,然后是 Tools,依次往下,最后是trumps。越往上它的复用性越好。Settings(设置):预处理程序的变量或方法,如 ...
2024-01-10PHP常用设计模式之委托设计模式
模式定义委托是对一个类的功能进行扩展和复用的方法。它的做法是:写一个附加的类提供附加的功能,并使用原来的类的实例提供原有的功能。假设我们有一个 TeamLead 类,将其既定任务委托给一个关联辅助对象 JuniorDeveloper 来完成:本来 TeamLead 处理 writeCode 方法,Usage 调用 TeamLead 的该方法,但现...
2024-01-10C# 设计模式之单例模式归纳总结
优缺点 优点:一、实例控制单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。二、灵活性因为类控制了实例化过程,所以类可以灵活更改实例化过程。缺点:一、开销虽然数量很少,但如果每次对象请求引用时都要检查是否存在类的实例,将仍...
2024-01-10【php】PHP设计模式之桥接模式
桥接模式,在程序世界中,其实就是组合/聚合的代名词。为什么这么说呢?熟悉面向对象的我们都知道继承的好处,子类可以共享父类的很多属性、功能。但是,继承也会带来一个问题,那就是严重的耦合性。父类的修改多少都会对子类产生影响,甚至一个方法或属性的修改都有可能让所有子类都去修...
2024-01-10【php】PHP设计模式之代理模式
代理人这个职业在中国有另外一个称呼,房产经济人、保险经济人,其实这个职业在国外都是叫做房产代理或者保险代理。顾名思义,就是由他们来帮我们处理这些对我们大部分人来说都比较生疏的专业领域的工作。代理模式也是一样的道理,同时,在这篇文章中还会简单的介绍正向代理和反向代理是...
2024-01-10