设计模式
文章平均质量分 67
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
y_bccl27
这个作者很懒,什么都没留下…
展开
-
设计模式之单例模式
简单点说,就是一个应用程序中,某个类的实例对象只有一个,你没有办法去new,因为构造器是被private修饰的,一般通过getInstance()的方法来获取它们的实例。getInstance()的返回值是一个对象的引用,并不是一个新的实例,所以不要错误的理解成多个对象。......原创 2020-05-31 11:37:08 · 178 阅读 · 0 评论 -
设计模式之工厂模式
工厂模式是我们最常用的实例化对象的一种模式,是用工厂方法代替new操作的一种模式。工厂模式又可以分为工厂方法模式和抽象工厂模式两种,抽象工厂模式是工厂方法模式的扩展。步骤第一步:创建一个接口,里面定义一个或者多个抽象方法第二步: 创建多个实现上述接口的子类第三步:构建一个工厂类第四步:进行测试。...原创 2020-09-01 17:07:29 · 170 阅读 · 0 评论 -
设计模式之策略模式
//创建一个接口public interface Strategy{ public int doOperation(int num1,int num2);}//创建实现接口的实现类一public class OperationAdd implements Strategy{ @Override public int doOperation(int num1,int num2){ return num1+num2; }}//创建实现接口...原创 2020-05-31 16:48:12 · 118 阅读 · 0 评论 -
Map+函数式接口如何“更完美”的解决 if-else的问题
Map+函数式接口通过Map.get(key)来代替 if-else的业务分派,能够避免策略模式带来的类增多、难以俯视整个业务逻辑的问题。原创 2022-08-18 11:27:04 · 306 阅读 · 0 评论 -
混合使用设计模式:策略模式+工厂模式+模板方法模式
接着不管每一个策略类是否都需要去执行这两个方法,在策略类中都要实现这两个抽象方法。我们知道有的策略类只需要执行其中的一个方法就可以,不需要执行的方法在策略类中进行了实现,这样就会出现空白代码块,代码看起来不够美观,因此上面这种方案并不是非常好。在引入了策略模式以后,可以看到还是会有if/else语句,当策略类逐渐增多时,这个if/else语句会影响我们代码的美观,还有代码的可读性,这个时候我们就可以引入工厂模式来消除这个if/else语句。引入了模板设计模式之后了,不同的子类就可以去实现不同的方法。...原创 2022-09-01 16:43:34 · 572 阅读 · 0 评论 -
设计模式之模板方法模式
准备一个抽象类,将部分逻辑以具体方法的形式实现,然后声明一些抽象方法交由子类实现剩余逻辑,用钩子方法给予子类更大的灵活性。最后将方法汇总构成一个不可改变的模板方法。定义了一个算法的步骤,并允许子类别为一个或多个步骤提供其实践方式。让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤。由于使用了继承方式,那么子类便不能再去继承其它类,不易于扩展。第一步:构建抽象基类,为所有子类提供的一个算法框架。3.重要、复杂的算法,核心算法设计为模板算法。第二步:构建咖啡制备类和的茶制备类。1、模板方法模式的概念。.原创 2020-09-01 19:02:19 · 122 阅读 · 0 评论 -
设计模式之代理模式
在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。1、职责清晰,真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件完成事务,附带的结果就是编程简洁清晰。),我们可以在程序运行的过程中根据不同的业务场景来决定我们要代理的对象,动态生成相应的代理对象,进而去完成不同的任务。为其它对象提供一个代理以控制对这个对象的访问。...原创 2020-07-04 11:20:35 · 151 阅读 · 0 评论 -
设计模式之观察者模式
对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。public interface Person { //小王和小李通过这个接口可以接收到小美发过来的消息 void getMessage(String s);}public class LaoWang implements Person { private String name = "小王"; public LaoWang() {} @Override原创 2020-05-31 11:20:27 · 171 阅读 · 0 评论 -
设计模式之责任链模式
将接收者对象连成一条链,并在该链上传递请求,直到有一个接收者对象处理它。通过让更多对象有机会处理请求,避免了请求发送者和接收者之间的耦合。3、增强给对象指派职责的灵活性,通过改变链内的成员或者调动它们的次序,允许动态地新增或者删除责任。发出请求的客户并不知道链上的哪一个接收者会处理该请求,从而实现了客户端和接收者之间的解耦。有多个对象可以处理同一个请求,具体哪个对象处理该请求由运行时刻自动确定。1、降低了请求的发送者和接收者的耦合度。2、简化了对象,使得对象不知道链的结构。结构:抽象处理类+具体处理类。原创 2020-05-31 16:55:01 · 177 阅读 · 0 评论 -
巧妙利用 SpringBoot 应用责任连模式,让编程事半功倍!
责任链模式(Chain of Responsibility Pattern),顾名思义,为请求者和接受者之间创建一条对象处理链路,避免请求发送者与接收者耦合在一起!在 SpringBoot 中,责任链模式的实践方式有好几种,今天我们主要抽三种实践方式给大家介绍。尤其是当程序的处理流程很长的时候,采用责任链设计模式,不仅实现优雅,而且易复用可扩展!如果需要继续加验证流程或者处理流程,只需要重新实现。首先,我们定义一个简易版的下单对象。然后,我们定义一个数据处理接口。接口就行,其它的代码无需改动!原创 2022-10-10 21:05:05 · 582 阅读 · 0 评论 -
设计模式之装饰器模式
装饰者的概念装饰者模式又名包装模式。动态的给一个对象添加一些额外的职责(侧重的是程序运行时的功能加强,并非子类继承父类时添加新的功能)。就扩展功能而言,它比生成子类的方式更为灵活。装饰者模式的适应场景1.以动态的方式给对象添加职责2.处理那些可以撤销的职责3.当采用生成子类的方法进行扩充时,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长...原创 2020-05-31 16:02:30 · 152 阅读 · 0 评论 -
如何优雅的使用装饰器模式
装饰器模式(Decorator Pattern):在不改变对象自身的基础上,在程序运行期间给对象动态的添加职责。原创 2022-10-19 18:42:07 · 358 阅读 · 0 评论 -
设计模式的介绍
https://mp.weixin.qq.com/s/sMM-vDgH2K0MjZ7XG0wkNQ原创 2020-09-01 16:59:21 · 111 阅读 · 0 评论