![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 83
maritimesun
上海计算所在读CS硕士,关注互联网,中间件,算法研究,JAVA,希望结识更多同道中人。微博:Candy_sict
展开
-
设计模式之单例模式
学习了这么久的设计模式,决定做个总结。看到CSDN博客上也有作者写过一天一个设计模式的,哈哈哈,我惭愧,做不到一天一个,那就两天一个设计模式吧。我力求把每一个模式总结得全面,除了基本原理以外,每个模式的应用场景,以及应该注意的问题等将会有介绍。在此,先特别感谢GOF的《设计模式—可复用面向对象软件的基础》这本书,真的是经典之作,也特别感谢其他已经做过设计模式总结的网友们,有了你们的知识分享,我才会原创 2012-08-07 21:01:47 · 1152 阅读 · 0 评论 -
设计模式之抽象工厂模式
抽象工厂模式1 模式概述 在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时由于需求的变化,往往存在着更多系列对象的创建工作。如何应对这种变化,绕过常规的对象的创建方法(new),提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合?可以采用以下解决方案——抽象工厂模式。2 模式动机 工厂方法模式中具体工厂负责生产具体的产品,每一个原创 2012-08-13 20:06:02 · 1709 阅读 · 0 评论 -
设计模式之简单工厂模式
提到工厂模式,有必要先说明下,工厂模式其实包含了三种模式:简单工厂模式、工厂方法模式和抽象工厂模式。其中,简单工厂模式并不属于GOF 23中设计模式中。先看下简单工厂模式。简单工厂模式 意图 一个工厂类根据传入的参量,动态决定应该创建出哪一个产品类的实例。 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式。 模式结构及参与者原创 2012-08-13 16:19:15 · 1382 阅读 · 0 评论 -
设计模式六大原则5—迪米特原则
迪米特原则(Least Knowledge Principle)定义:迪米特原则,又叫“最少知识原则”。其含义是:一个对象对其他对象有最少的了解,即一个类应该对自己需要耦合或调用的类知道得最少,只需知道它所提供的接口就行。问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。解决方案:尽量降低类与类之间的耦合。 迪米特法则还有一原创 2012-08-11 16:01:45 · 1881 阅读 · 0 评论 -
设计模式六大原则6—开闭原则
开闭原则定义:软件实体如类、模块、函数等应该对外扩展开放,对修改关闭。也就是说,一个软件实体应该通过扩展来实现变化,而不是修改已有的代码来实现变化。问题由来:在软件的生命周期内,因为需求变化、系统升级或维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过回归测试。解决方案:当软件需要变化时,尽量通原创 2012-08-11 16:36:44 · 997 阅读 · 0 评论 -
设计模式六大原则4—接口隔离原则
接口隔离原则定义:1)客户端不该依赖它不需要的接口;2)类间的依赖关系应该建立在最小的接口上。问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类C来说不是最小接口,则类B和类D必须去实现他们不需要的方法,如下图所示。解决方案:将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原原创 2012-08-11 14:49:19 · 1333 阅读 · 0 评论 -
设计模式六大原则3—依赖倒置原则
依赖倒置原则(Dependence Inversion Principle, DIP)定义:依赖倒置原则具有以下三层含义:1、高层模块不应该依赖底层模块,两者都应该依赖其抽象;2、抽象不应该依赖细节;3、细节应该依赖抽象。问题由来:类A直接依赖类B,若要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般为高层模块,负责复杂的业务逻辑;类B和类C是低层模原创 2012-08-10 22:38:18 · 1034 阅读 · 0 评论 -
设计模式六大原则1—单一职责原则
单一职责原则(SingleResponsibility Principle ,SRP)定义:应该有且只有一个原因引起类的变更。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T原创 2012-08-10 13:12:47 · 1368 阅读 · 0 评论 -
设计模式六大原则2—里氏替换原则
里氏替换原则(Liskov Substitution Principle, LSP) 看到里氏替换原则,感觉很好奇,名字很怪,哈哈哈,其实这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的,向伟大的IT届的女精英们致敬!定义1:如果对应类型为S的对象o1,有类型为T的对象o2,使得以T定义的所有程序P,在所有的对象o1都替原创 2012-08-10 11:01:14 · 2069 阅读 · 0 评论 -
单例模式以及双检锁DCL
回想起曾经经历的一次面试,是关于设计模式的。当时自己讲了单例模式,但是并没有全面地把与单例模式相关的线程安全问题理解清楚,当时的场景,哎,往事不堪回首,不过技术终归于技术,是必须掌握滴~ 1、单例模式 关于单例模式,就不再详细叙述,想必大家都耳熟能详了,简单回顾下吧。以下是单例模式的一个例子:public class DoubleCheckedLock { pri原创 2012-08-04 22:44:34 · 13678 阅读 · 6 评论 -
设计模式之工厂方法模式
工厂方法模式1 工厂方法模式的引入——简单工厂模式的不足在《设计模式之简单工厂模式》一文中,提到简单工厂模式:1)只提供了一个工厂类,该工厂类知道每一个产品对象的创建细节;2)当有新产品要加入时,必须修改工厂类,加入必要的处理逻辑,这违背了“开闭原则”,也是其最大的缺点。3)工厂类职责较重,业务逻辑较为复杂,具体产品与工厂类之间的耦合度高,影响系统的灵活性和扩展性。因此,引原创 2012-08-13 19:06:15 · 865 阅读 · 0 评论