![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 77
玄月九九重又一
这个作者很懒,什么都没留下…
展开
-
《设计模式》——建造者模式
1、介绍1.1背景当一个类的内部数据过于复杂的时候(通常是负责持有数据的类,比如Config、VO、PO、Entity…),要创建的话可能就需要了解这个类的内部结构,还有这些东西是怎么组织装配等一大坨乱七八糟的东西,这个时候就会增加学习成本而且会很混乱,这个时候就想啊想一种什么法子来管理一下这个类中的数据呢,怎么在创建的时候让它按部就班的来,并且代码可读性很好别让我看花了眼啊,我要的东西也能都很好设置进来,这就是Builder模式的应用场景,Builder模式可以将一个类的构建和表示进行分离。1.2适原创 2021-02-21 20:56:05 · 169 阅读 · 0 评论 -
《设计模式》——工厂模式
1、优缺点和应用场景在《简单工厂模式》一节我们介绍了简单工厂模式,提到了简单工厂模式违背了开闭原则,而“工厂方法模式”是对简单工厂模式的进一步抽象化,其好处是可以使系统在不修改原来代码的情况下引进新的产品,即满足开闭原则。优点:用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程。灵活性增强,对于新产品的创建,只需多写一个相应的工厂类。典型的解耦框架。高层模块只需要知道产品的抽象类,无须关心其他实现类,满足迪米特法则、依赖倒置原则和里氏替换原则。缺点:类的个数容易过原创 2021-02-07 19:35:48 · 145 阅读 · 0 评论 -
《设计模式》——简单工厂
什么是简单工厂?1、简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,一个抽象的产品类,可以派生出多个具体的产品类,它们都具有共同的父类。我们再来看下简单工厂模式的UML图:2、简单工厂模式的构成工厂类:工厂类是我们的核心类,它负责创建所有实例的内部逻辑,工厂类可以直接被调用创建我们的产品实例。抽象产品类:简单工厂模式所创建的所有对象的父类,它负责描述所有实例所拥有的公原创 2021-01-30 14:01:35 · 242 阅读 · 1 评论 -
《设计模式》——里氏替换原则
1、什么是里氏替换原则Liskov于1987年提出了一个关于继承的原则“Inheritance should ensure that any property proved about supertype objects also holds for subtype objects.”——“继承必须确保父类所拥有的性质在子类中仍然成立。”也就是说,当一个子类的实例应该能够替换任何其父类的实例时,它们之间才具有is-A关系。该原则称为Liskov Substitution Principle——里氏替换原则原创 2021-01-24 11:32:11 · 350 阅读 · 0 评论 -
《设计模式》——组合优于继承原则
一、组合优于继承通常我们都听说过组合优于继承原则,但是可能不太明白为什么要这样用?本篇文章就以不同的场景,来阐述继承在某些场景下的缺点,以及组合的巧妙之处。二、代码示例1、场景一制作一个集合,要求统计该集合诞生以来,共添加过多少元素(不是统计集合当前数量,而是一共加过多少)那么我们使用继承,很容易实现,如下代码:package cn.com.design.model.test.composite.supplement.a;import java.util.Collection;import原创 2021-01-12 17:48:41 · 1781 阅读 · 1 评论 -
《设计模式》——接口隔离原则
1、什么是接口隔离原则?客户端不应该依赖它不需要的接口。一个类对另一个类的依赖应该建立在最小的接口上。使用多个专门的接口比使用单一的总接口要好。一个类对另外一个类的依赖性应当是建立在最小的接口上的。一个接口代表一个角色,不应当将不同的角色都交给一个接口。没有关系的接口合并在一起,形成一个臃肿的大接口,这是对角色和接口的污染。2、示例反例:现在有一个借口Animal,里边有eat,fly,swim三个方法,现在新建三个类,bird,dog,fish,这样,鱼就可以游泳,鸟可以飞,狗狗和鸟以及原创 2021-01-06 10:25:53 · 588 阅读 · 1 评论 -
《设计模式》——依赖倒置原则
1、什么是依赖倒置原则依赖倒置原则(Dependence Inversion Principle)是程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。2、意图面向过程的开发,上层调用下层,上层依赖于下层,当下层剧烈变动时上层也要跟着变动,这就会导致模块的复用性降低而且大大提高了开发的成本。面向对象的开发很好的解决了这个问题,一般情况下抽象的变化概率很小,让用户程序依赖于抽象,实现的细节也依赖于抽象。即使实现细节不断变动,原创 2021-01-04 15:26:02 · 625 阅读 · 1 评论 -
《设计模式》——开闭原则
一、什么是开闭原则对修改关闭,对扩展开放。比如有一个书城,售卖书籍有原价,现在要新增一个打折价。那么,一定要保证已有功能不被修改破坏,而是把新功能扩展出来,不要影响原有功能,而是把新功能扩展出来,不要动源代码,可以自己写一个类,继承原来的类。也就是能实现原价功能,又能扩展新增的打折价格功能。二、为什么使用开闭原则第一:开闭原则非常有名,只要是面向对象编程,在开发时都会强调开闭原则第二:开闭原则是最基础的设计原则,其它的五个设计原则都是开闭原则的具体形态,也就是说其它的五个设计原则是指导设计的工具和方原创 2021-01-04 10:39:05 · 543 阅读 · 0 评论 -
《设计模式》——迪米特法则
一.什么是迪米特法则迪米特法则又叫做最少知道原则,就是说一个对象应当对其它对象有尽可能少的了解,不要和陌生人说话。强调只和朋友说话,不和陌生人说话。这里的朋友指的是:出现在成员变量,方法输入,输出参数中的类称为成员朋友类,而出现在方法体内部的类不属于朋友类。迪米特法则初衷在于降低类之间的耦合。由于每个类尽量减少对其它类的依赖,因此。很容易使得系统的功能模块独立,相互之间不存在(或很少有)依赖关系。详细可参考:迪米特法则问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影原创 2020-12-29 19:21:57 · 510 阅读 · 0 评论