![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
书读百遍
熟读百遍。
展开
-
设计模式-单例模式(双重检查)
定义:保证一个类只有一个实例,并提供一个全局访问点类型:创建型应用场景1.只希望有一个实例。优点减少内存的开销避免对资源的多重利用缺点无接口。源码应用的场景Runtime类public class Runtime { private static Runtime currentRuntime = new Runtime(); public st...原创 2018-12-19 23:52:12 · 641 阅读 · 0 评论 -
设计模式-装饰者模式
定义:在不改变对象的基础上,附加新的功能 类型:结构型应用场景给一个类添加功能或者添加附属职责动态的给一个对象添加功能。优点提供了比继承更有弹性的扩展功能的替代方案继承的有力补充。可以通过组合的形式动态的去装饰原有的类。更灵活的扩展功能符合开闭原则缺点出现更多的类、更多的代码增加了程序的复杂性动态装饰、多层装饰将会更加复杂替代方案扩展知识将基本稳定的属...原创 2019-01-01 22:39:59 · 158 阅读 · 2 评论 -
设计模式-外观模式
定义:外观模式又叫门面模式,提供一个接口用于访问子系统的一群接口。类型:结构型应用场景子系统越来越复杂,提供了高层调用,简化使用难度。使用者无需知道具体子系统如何工作的。优点简化调用流程,无需知道子系统如何运作。避免风险(子系统更改了,调用者也要做相关的测试。若抽象出了上层接口了。只需要测试上层接口传入参数能够接收到预定的结果即可。)减少外层调用者对子系统的强依赖关系,降低耦...原创 2018-12-28 17:27:53 · 152 阅读 · 0 评论 -
设计模式-构建者模式
定义:将一个复杂对象的构建与表示分离。使用相同的构建过程可以创建不同的表示。类型:创建类型应用场景一个对象有很复杂的结构(很多属性)想把对象的创建与对象的使用分离优点封装性好,创建与使用分离扩展性好,构建类之间是相互独立的,一定程度上解耦缺点类爆炸,对应多个builder类产品内部发生变化,构建者的build也要修改源码应用的场景JDK StringBui...原创 2018-12-17 17:01:07 · 137 阅读 · 0 评论 -
设计模式-克隆模式
定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。创建型应用场景类型初始化消耗资源较多、new一个对象的过程非常繁琐。循环体产生大量的对象优点原型模式性能比new一个对象性能高简化创建流程缺点必须配置多个克隆方法克隆复杂对象,对克隆出的对象复杂操作复杂的改造,容易引发风险(例如:浅克隆)源码应用的场景JDK 的ArrayListpu...原创 2018-12-27 15:28:18 · 496 阅读 · 0 评论 -
设计模式-抽象工厂
定义:抽象工厂模式是提供一个创建一系列相关或者相互依赖对象的接口针对于具体的某一个产品。抽象工厂就是一个工厂方法模式。应用场景强调是一系列的产品对象(属于同一产品族)一起使用,并且创建对象有大量的重复代码。客户端对生产细节并不关心,只关注传入参数,拿到对象。优点将生产对象的细节与客户端(应用层)解耦将一系列的产品族统一在一起创建添加一个新的产品族时候不用修改原有的业务逻辑...原创 2018-12-16 18:53:49 · 93 阅读 · 0 评论 -
设计模式-工厂方法模式
定义:定义一个创建一类对象的接口,让实现这个接口的子类决定生产哪个对象。类型:创建者类型应用场景客户端对生产对象的细节并不关心,只关注传入参数,拿到对象。创建对象需要大量的代码。优点客户端无需关系对象创建的细节符合开闭原则缺点类的数量过多(每一个类型对象,就需要一个对应的工厂类)理解逻辑难度增加源码应用的场景Connection定义了返回Statement...原创 2018-12-15 21:02:01 · 80 阅读 · 0 评论 -
设计模式学习-原则把控
开闭原则定义:一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。这是终极追求, 其余五个设计原则就是为了最终达到开闭原则。单一职责原则定义:应该有且只有一个原因引起类的变更。换句话说就是一个接口只做一件事,即一个职责一个接口。侧重点业务职责。分类:接口级别、方法级别。接口隔离原则定义: 建立单一接口,不要建立臃肿庞大的接口。即接口尽量细化,...原创 2018-12-14 17:59:39 · 104 阅读 · 0 评论 -
设计模式-简单工厂(非GOF23种设计模式之一)
定义:由一个工厂类决定生产哪一种产品的实例应用场景工厂要生产的产品种类不多客户端对生产细节并不关心,只关注传入参数,拿到对象。优点根据正确的参数就能生产出产品实例将生产对象的细节与客户端(应用层)解耦源码应用的场景jdk中Calendar类的createCalendarpublic abstract class Calendar implements Seria...原创 2018-12-15 17:32:24 · 201 阅读 · 0 评论 -
设计模式-单例模式(补充:反序列化对单例破坏与解决方案)
反序列化对单例破坏与解决方案在需要序列化的类加readResolve方法,注意:1、参数要为空,2、返回要为Object类型的方法。3返回的值是 单例实例的引用。原因参考下面基础核心代码截图下面是demopackage creational.singleton;import java.io.Serializable;public class LazyDoubleCheck...原创 2018-12-20 00:10:10 · 198 阅读 · 0 评论 -
设计模式-适配器模式
定义:讲一个类的接口转换成客户期望的另一个接口结构型应用场景已存在的类与需求不匹配(但是结果相同或者类似)不是软件设计阶段需要考虑的设计模式,而是随着软件的维护,不同的厂商、不同的产品造成了类似而接口不同的一种解决方案优点提高类的复用性,且现有的代码不需要修改。目标类与被适配的类解耦。符合开闭原则缺点增加了代码的复杂度替代方案扩展知识源码应用的场景Advi...原创 2019-01-01 23:25:27 · 103 阅读 · 0 评论