
轻松搞定设计模式
文章平均质量分 51
凌澜星空
这个作者很懒,什么都没留下…
展开
-
“备忘录模式”就这么简单
备忘录模式的官方定义:在不破坏封装性的前提下,获取一个对象的内部状态,并在该对象之外保存这些状态。这样以后就可以通过该对象恢复到原先保存的状态。原创 2015-08-26 20:22:50 · 2626 阅读 · 1 评论 -
三分钟理解“工厂模式”——设计模式轻松掌握
工厂模式和简单工厂模式的比较:简单工厂模式把创建哪个运算类的对象放在工厂类中实现,也就是放在低层模块中实现;从而客户端在需要创建对象时仅仅需要给工厂传入一个key就能获取想要的对象。但当运算体系需要扩展的时候,就需要在工厂中增加新对象的判断,从而破坏了“封闭修改”的原则。工厂模式由于抽象出了一个工厂父类,并且每一运算子类都有一个专门创建该子类对象的工厂子类,因此在增加运算子类的时候,工厂类不需要修改任何代码,只需要增加一个工厂子类即可。但客户端就需要给判断究竟给工厂父类创建哪个工厂子类对象。原创 2015-09-01 10:03:28 · 2749 阅读 · 3 评论 -
高质量编程的金玉良言——开放-封闭原则
什么是“开放-封闭”原则?软件的类、模块、函数等交付后,如果需要增加功能,不要去修改原来的代码,而是通过新增加类的方法去扩展功能。所谓的“开放”就是指开放接口,也就是通过增加子类的方法来增加功能;“封闭”指的是封闭修改,也就是代码一旦提交,就不要再去修改它。原创 2015-08-31 13:28:14 · 1241 阅读 · 0 评论 -
高质量编程的金玉良言——依赖倒转原则
生活中的例子:电脑的品牌有很多,但电脑中的所有部件都有标准的接口,不同的厂家都是按照标准去生产各个部件,这些部件的内部实现不同,但接口都是一样的,这样的话,如果我的联想电脑的内存条坏了,我随便买一根内存条插上都能使用。之所以我们的电脑能使用任何厂家生产的内存条,是因为这些电脑生产厂家都是“面向接口”生产,而在软件世界中,面向接口编程就是依赖倒转。依赖倒转的官方定义:1.高层模块不应该依赖于低层模块,他们都应该依赖于抽象;2.抽象不应该依赖于细节。细节应该依赖于抽象。原创 2015-08-31 14:24:03 · 1072 阅读 · 0 评论 -
高质量编程的金玉良言——单一职责原则
“单一职责原则”的官方定义:就一个类而言,应该仅有一个引起它变化的原因。大白话讲:在设计类的时候,应该要让每一个类仅有一个职责,每一个类只做一类事情,这就是单一职责原则。“每一个类只做一类事情”的好处:如果一个类承担的职责过多,就等于把这些职责藕合在一起,一个职责的变化可能会削弱或抑制这个类完成其他职责的能力。这种藕合会导致脆弱的设计,当变化发生时,设计会遭到意想不到的破坏。在程序设计时,我们需要在类的职责分离上多加思考,做到单一职责,这样你的代码才是真正的易维护、易复用、灵活多样。原创 2015-08-31 11:25:49 · 1078 阅读 · 0 评论 -
【视频教程】张全蛋与李小花的故事——代理设计模式
为了让大家更方便地理解设计模式,我录了个短小的视频,这是视频链接:点击观看视频。如果看了视频仍有疑惑,可以看一下“代理模式”的文章:点击查看文章原创 2015-09-01 21:20:28 · 1133 阅读 · 0 评论 -
三分钟理解“抽象工厂模式”——设计模式轻松掌握
实际问题:使用工厂模式写一个程序,既能使用SqlServer访问User表,又能使用Access访问User表。1.创建对User表进行访问的接口UserDao,该接口中包含了所有对User类处理的函数。2.由于Access和Oracle数据库中都含有User表,但不同的数据库对User表实现相同操作的实现是不一样的,因此创建两个UserDao的实现类,分别用户处理Orac原创 2015-09-02 18:17:59 · 1651 阅读 · 0 评论 -
三分钟理解“装饰模式”——设计模式轻松掌握
什么是装饰模式?在运行的过程中,给一个对象动态地添加一些额外的行为。每一个具体的装饰类都为被装饰类添加一个功能。装饰模式的类图1.需要被装饰的对象所在的类和装饰类都有一个共同的父类Component,该类中拥有需要添加额外功能的函数:operation();class ConcreteComponent() extends Component{ public vo原创 2015-09-06 17:14:07 · 1460 阅读 · 0 评论 -
三分钟理解“状态模式”——设计模式轻松掌握
什么是状态模式?一个函数原本有很多判断语句,现在把判断语句中的每一种状态封装成一个类,每一个状态类中均有一个handle()函数,该函数能对当前状态做出处理,并且能指明不能处理时的下一个状态类。状态模式的类图1.将一个原本的判断结构封装成一个个状态类,每个状态类都有函数handle(Context);该函数对本状态作出处理,当无法处理时,将context肚子中的成员原创 2015-09-06 16:00:11 · 1045 阅读 · 0 评论 -
三分钟理解“桥接模式”——设计模式轻松掌握
什么是桥接模式?将两个继承体系使用聚合/组合连接在一起,这就是桥接模式。桥接模式的类图桥接模式中,最大的特色就中两个继承体系中间的那座桥(聚合/组合)。桥接模式中有两个继承体系,分别称为“抽象”和“实现”;抽象类中持有实现类的引用,并且含有set函数用于给用户设置这个抽象类的实现;当给抽象类的对象设置完实现类对象之后,用户就可以通过抽象类的对象访问实现类对象中的原创 2015-09-06 13:14:57 · 2994 阅读 · 0 评论 -
三分钟理解“命令模式”——设计模式轻松掌握
什么是命令模式?假设现在有一个请求处理类(低层类/第三方类),如果客户端拿到这个类之后直接调用它,那么客户端和这个请求处理类之间的藕合度过高。这时候我们在客户端的请求发送类和请求处理类之间增加一个Invoker类,再将请求发送类发送的所有请求封装成对象,然后让Invoker类去管理这些请求对象,并决定这些请求是否允许执行、何时执行、按什么顺序执行。由于在请求发送类和请求处理类之原创 2015-09-06 14:26:23 · 1932 阅读 · 1 评论 -
张全蛋和李小花的故事——“代理模式”
假设张全蛋喜欢上了李小花,张全蛋准备给李小花送一些礼物,但张全蛋又非常害羞,因此买了礼物之后让王尼玛代送。王尼玛跑到李小花把礼物送给她之后就走了。那么问题就来了,李小花误以为礼物是王尼玛送的。在代码世界中也是一样,张全蛋、王尼玛、李小花是三个对象,张全蛋对象中有一个函数:送礼物,王尼玛对象中也有个函数:送礼物,但王尼玛的送礼物函数只是调用了张全蛋的送礼物函数,也就是送礼物函数的真正实现在张全蛋对象中。然后李小花调用了王尼玛对象中的送礼物函数,李小花并不知道张全蛋的存在,误以为送礼物的函数就是王尼玛的。那原创 2015-09-01 09:06:34 · 2517 阅读 · 1 评论 -
三分钟理解“策略模式”——设计模式轻松掌握
策略模式的作用:1.使用了策略模式后,如果需要增加一种策略,那么只需要创建一个实现了Strategy接口的子类,并重写其中的函数,然后在Context的构造函数中增加这种子类的判断。客户端的代码、Context中contextInterface()的代码无需作任何修改。2.策略模式与简单工厂模式的相似之处:Context的构造函数、Factory的getBean()都是用来判断创建何种类型的对象的。工厂模式和策略模式都能够将“客户端对究竟创建何种类型的判断”转移到Factory/Context中,从原创 2015-08-31 11:14:43 · 2638 阅读 · 2 评论 -
三句话搞定适配器模式
适配器模式的官方定义:将一个与当前类无法兼容的接口转换成能够兼容当前类的接口。原创 2015-08-26 18:36:05 · 1557 阅读 · 0 评论 -
三分钟掌握“职责链模式”——轻松搞定设计模式
职责链模式的官方定义:职责链模式使得多个对象都有机会处理请求,从而降低了请求的发送者和接受者之间的耦合关系。这些对象被连成一条链,并沿着这条链传递发送者的请求,直到有一个对象能处理它为止。原创 2015-08-27 23:45:24 · 1458 阅读 · 0 评论 -
三分钟掌握“迭代器模式”——轻松搞定设计模式
迭代器模式的官方定义:迭代器模式提供了一种方法,它能够顺序访问一个集合对象中的各个元素,并且又不暴露该对象的内部结构。原创 2015-08-27 22:50:59 · 1789 阅读 · 3 评论 -
三分钟理解“享元模式”——设计模式轻松掌握
享原模式的官方定义:运用共享技术有效地支持大量细粒度的对象。原创 2015-08-28 20:50:30 · 2389 阅读 · 1 评论 -
三分钟理解“中介者模式”——设计模式轻松掌握
中介者模式的官方定义:中介者模式使用一个中介对象来封装一系列对象的交互,从而使各对象不需要显式的相互引用,从而使得对象我们耦合松散,而且可以独立地改变对象之间的交互。原创 2015-08-28 09:16:26 · 1529 阅读 · 0 评论 -
三分钟理解“原型模式”——设计模式轻松掌握
原型模式的官方定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原创 2015-08-29 22:19:03 · 1133 阅读 · 0 评论 -
三分钟理解“外观模式”——设计模式轻松掌握
实际生活中的例子:现在流行炒股,股民一般都手持好多个股票,而股民每天需要关注手中N个股票的动向,随时针对不同的股票作出不同的决策,这样感觉心好累;于是有的人选择买基金。基金本质上还是炒股票,只不过基金机构拿了投资人的钱买了N个股票,而我们只要购买一个基金就够了,对N个股票的管理就交给基金机构去折腾了,我们瞬间感觉好轻松。代码世界也是一样,每个股票都是一个类,每个基金都是一个类,股民就是这些类的使用者。如果股民直接操作多个股票类,那会导致股民类中的操作非常复杂,那么股民类和整个系统的藕合度也就很高。如果引原创 2015-08-30 11:06:22 · 1993 阅读 · 0 评论 -
高质量编程的金玉良言——迪米特法则
迪米特法则:如果两个类不必彼此间直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。原创 2015-08-30 08:49:38 · 1726 阅读 · 1 评论 -
三分钟理解“建造者模式”——设计模式轻松掌握
“建造者模式”生活中的例子:肯德基做汉堡的过程都是有严格的规范的,不管是麦香鸡腿堡还是新奥尔良烤鸡腿堡,他们的制作步骤都是有严格规定,做汉堡的人既不能多做一步,也不能少做一步。对于不同的汉堡来说,虽然每一步加的料所有不同,但做汉堡的步骤都是一样的。因为有了对做汉堡过程的严格控制,因而全国所有的肯德基店做出来的汉堡味道都是一样的。这些汉堡就是一个个对象,刚被创建出来的时候它就是两片面包片,没有任何内容;然后我们把它扔到一个流水线上,这个流水线会按照指定的步骤往汉堡对象中逐步添加材料;当汉堡走完一遍流程后,原创 2015-08-30 14:07:08 · 1947 阅读 · 0 评论 -
三分钟理解“简单工厂模式”——设计模式轻松掌握
工厂模式在实际生活中的问题:由于超市隔三差五就要办促销活动,但每次促销活动的方式不一样,所以需要开发一个软件,营业员只要输入原价再选择活动类型后,就能计算出折扣以后的价钱。工厂模式的作用:工厂是用来管理、创建对象的。如果一个类会根据情况的不同产生含有不同属性值的对象,或者一个类会根据情况的不同产生不同的子类对象,这时候需要使用工厂模式,在工厂中完成究竟创建哪种类型的对象的判断,客户端只需在Factory.getBean(key)函数中传入一个key,就能够获取对应类型的对象。因此,工厂模式能够将“原创 2015-08-31 10:27:13 · 1518 阅读 · 1 评论 -
柴毛毛大话设计模式——开发常用的设计模式梳理
写在最前本文是笔者的一点经验总结,主要介绍几种在Web开发中使用频率较高的设计模式。本文篇幅较长,建议各位同学挑选感兴趣的设计模式阅读。在阅读的同时,也麻烦各位大佬多多分享!有你们的肯定,才有我继续分享的动力如需转载,请与我联系!人工智能看面相最近忙里偷闲,对人工智能看面相进行了一些优化,欢迎各位大佬体验!体验后恳请各位大佬分享朋友圈!基础学习:UML四原创 2018-01-30 21:41:07 · 2053 阅读 · 1 评论