设计模式
文章平均质量分 84
GDUT_Ember
这个作者很懒,什么都没留下…
展开
-
设计模式(五):建造者模式
依赖倒转原则抽象不应该依赖细节,而细节需要依赖抽象对于建造者模式来说,就是将工作的流程抽象起来,具体的工作细节都依赖于这个抽象建造者模式概念比如建造一个产品,该产品是由一系列工件组装成的,但是对于该产品的不同系列,有一些工件是不同型号的,当我们使用程序去表达建造产品的这些过程,一般来说对于每一个工件就是一个类,然后给一个具体产品去嵌入这个类,比如一个A产品,嵌入了A工件的头部、A工件的手部等。。。。假如我们后面再去建造一个新产品,又要去给新产品重新嵌入,这样很容易会出现问题,即容易丢失工件,有一些原创 2021-09-16 16:53:47 · 99 阅读 · 0 评论 -
设计模式(六):观察者模式(发布订阅模式)
双向耦合观察者模式总结一下什么时候可以使用观察者模式呢?观察者模式的不足事件委托实现委托事件本质首先来说一下什么是观察者模式,观察者模式其实跟消息发送器差不多,观察者觉察到了事件发生,就去通知其他人该事件,说白了担任的角色跟晚修课上时刻注意级长来了的同学一样双向耦合假如我们去实现观察者模式的时候,通常需要两个部分观察者:观察事件是否发生,其实本质上是监听通知者通知者:通知者要去通知观察者事件发生这就涉及到一个双向耦合的问题,当新增一个观察者,或者新增一个通知者时,两方都要进行修改的!新.原创 2021-09-16 16:52:43 · 206 阅读 · 0 评论 -
设计模式(四):代理模式、原型模式与模板方法模式
代理模式代理模式的应用原型模式原型模式的优点模板方法模式模板方法特点代理模式代理模式是指:为对象提供一层代理来控制对这个对象的操作或者访问举个栗子,比如实现代理处理请求我们首先实现一个接口,该接口包含了代理类和Service类的功能然后我们实现Service类再然后我们实现我们的代理类通过使用接口规范代理和Service类共有的功能,让代理类组装Service类,那我们就可以实现代理了,从外界看起来就像是,代理帮Service去实现请求处理代理模式的应用远程代理:为一个对象在不同.原创 2021-06-03 23:06:13 · 226 阅读 · 0 评论 -
# 设计模式(三):策略模式与装饰者模式
策略模式装饰者模式策略模式策略模式定义了一系列的算法族,并且分别封装起来,让他们之间可以互相替换,不会影响到使用算法的客户,即对于客户端的使用是抽象的,之前我们去重用对象行为的时候,一般是通过继承去实现的,久而久之对象就会越来越多,那么继承的关系就会很乱为了解决这种乱象,同时又可以实现重用代码功能,甚至去实现自定义替换,就有了策略模式将类的公共行为和属性提取出来,让一个抽象类去组装这些公共行为和属性当我们具体去实例类的时候,我们先去实例提取出来的公共行为和属性,然后组装进实例里面实例出来的.原创 2021-06-02 22:04:18 · 893 阅读 · 1 评论 -
设计模式(二):单例模式实现
单例模式懒汉模式实现单例模式全局访问点加锁双重检测防止创建对象时重排序饿汉模式实现单例模式静态内部类实现单例模式破坏单例模式反射破坏序列化进行破坏枚举单例模式单例模式是指:保证一个类仅有一个实例,并且提供一个访问它的全局访问点懒汉模式实现单例模式懒汉模式是指:只有要用的时候才会进行单例的实例化,也就是延迟加载实现的代码如下/** * @Author: Ember * @Date: 2021/6/2 13:46 * @Description: */public class Single.原创 2021-06-02 20:29:45 · 104 阅读 · 0 评论 -
# 设计模式(0):面向对象原则
单一职责原则开放封闭原则依赖倒转原则里氏替换原则可维护:改的时候只需要改的东西,而不用因为去修改其他东西来进行适配可复用:可以重复使用可扩展:可以扩展新功能,灵活性高单一职责原则单一职责原则可以简单理解成是功能要单一准确解释为:就一个类而言,应该仅有一个引起它发生变化的原因如果一个类功能不单一,那么当各种功能新需求进来的时候,都需要去修改这个类,导致了维护麻烦、复用难、也缺乏灵活性比如如果将视图、SQL、逻辑处理的代码都放在一个类上面,那么这3个功能其中一个要发生修改,都要去对改类进行修改.原创 2021-06-01 23:06:11 · 53 阅读 · 0 评论 -
设计模式(一)——简单工厂、工厂与抽象工厂
简单工厂模式工厂模式抽象工厂模式抽象工厂模式的优点与缺点简单工厂优化抽象工厂反射+抽象工厂三种模式的区别,与使用场景简单工厂模式简单工厂模式是指:使用一个单独的类去实现创造实例的过程,该类就被称为工厂类举个栗子假设这里要实现一个计算器,为了将计算器的功能进行隔离(对加减乘除的方法进行隔离,使其互不干扰,又为了提取公共的运算部分),将公共部分放在一个超类,然后对应去实现不同运算功能的子类一个功能就对应一个类简单工厂类根据页面传来的类型来调用不同模块也就是将实例对象的能力交给了简单工厂类去进.原创 2021-06-01 23:05:05 · 426 阅读 · 0 评论