设计模式收藏这篇就够了 耗时了5个月,终于把设计模式一整个系列写完。其实设计模式这一系列文章网上已经有很多非常好、非常优秀的文章,为什么要写呢? 一方面是为了学得更扎实,印象中设计模式学习了2遍,记得牢的基本就那几个众所周知的,反思前面2次学习过程,缺少了思考的过程,没有把知识消化掉转化成自己的,就像动物一样,吃进去的东西没有消化只能排
定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。策略模式使这些算法在客户端调用它们的时候能够互不影响地变化。(Java的TreeSet集合中,构造方法可传入具体的比较器对象以实现不同的排序算法。就是利用的策略模式)策略模式的用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换,使用策略模式可以把行为
代理模式的本质是一个中间件,主要目的是解耦合服务提供者和使用者。使用者通过代理间接的访问服务提供者,便于后者的封装和控制。是一种结构性模式。 1.目的 为外部调用者提供一个访问服务提供者的代理对象。 2.动机 限制对目标对象的直接访问,降低耦合度。 3.优缺点 优点: 低耦合 易扩展 灵活度高 缺点: 间接访问可能会
上一篇我们已经学会了模板方法模式,这次我们继续来深入学习下。毕竟学会只是第一步,还有更进一步的学习和深入等着我们呢。 我们先来看下,对模板方法模式的一个总结的类图: 让我们细看抽象类是如何被定义的,包含了它内含的模板方法和原语操作。 abstractclassAbstractClass{ //这就是模板方法。它被声明为final,以免子类改变这个算法的顺序 finalvoidtemplateMethod(){ //模板
一、什么是中介者模式 中介这个词并不陌生,就是房屋中介的那个“中介”,就是中间人的意思。比如MVC模式,C(Controller控制器)是M(Model模型)和V(View视图)的中介者,在前后端交互时起到了中间人的作用。 中介者模式(Mediator),用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地
关注公众号JavaStorm获取最新文章。 观察者模式(有时又被称为模型(Model)-视图(View)模式、源-收听者(Listener)模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。 源代码地址:https://github
定义: 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 结构:(书中图,侵删) 一个抽象的状态类,拥有一个与状态相关的行为方法 若干个具体的状态类 一个上下文类,持有抽象状态类 实例: 写到这里,看了一眼桌上的零食,想到了一个例子。 食品大概分为三个阶段,或者说三种状
职责链模式 职责链是什么 职责链是为请求创建了一个接收者对象的链。每个接收者都包含对另一个接收者的引用,如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。 例如:学生想请假,院长只能批2天假,校长可以批7天假。 学生联系院长,院长联系校长,学生不用知道校长的联系方式,也能请假,降低了学生与校长的耦合度
一、什么是访问者模式 访问者模式是一个相对比较简单,但结构又稍显复杂的模式,它讲的是表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。例如,你在朋友家做客,你是访问者,朋友接收你的访问,你通过朋友的描述,然后对朋友的描述做出一个判断,这就是访问者模式。 访问者模式
定义: 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 书中说到Gof的设计模式中,讲了两种类型的适配器模式: 1.类适配器模式 2.对象适配器模式 其中,类适配器模式,是通过多重继承来实现了。 但是Java是不支持多重继承的,所以下面主要讲的是对象
定义: 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。 结构:(书中图,侵删) Originator:需要备份的类(写在便签上的内容) Memento:备份类,里面包含部分或全部Originator的属性(便签纸) Caretaker:真正保存备份的地方(便签纸贴的地方)
模板方法模式是一个很常见的模式,但是也需要我们拥有一双锐利的眼睛,因为模板方法有许多实现,而他们看起来并不一定和书上所讲的设计一致。 这个模式很常见是因为对创建框架来说,这个模式简直棒极了。由框架控制如何做事情,而由你(使用这个框架的人)指定框架算法中每个步骤的细节。 用模板方法排序 我们经常需要数组做什么事情?对了!排序。 Java数组类的
定义: 将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 结构:(书中图,侵删) 一个Component接口:定义统一的方法 若干树枝(Composite)类(继承Component):可包含若干个叶子(Leaf)节点 若干树叶(Leaf)类:叶子节点 书中说到这个模式有两种方式:
定义: 提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 结构:(书中图,侵删) 一个抽象的聚合类 若干个具体的聚合类,有一个生成迭代器的方法(相当于实现java的Iterable接口) 一个抽象的迭代器,定义了迭代所必须的方法 若干个具体的迭代器 来学习一下java中结构 《Java编程
定义: 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 结构:(书中图,侵删) 结构超简单。就在你想控制实例数的类上操作即可。 1.定义一个static的对象引用 2.私有化构造方法 3.提供一个获取实例的方法(static的) 实例: 这又是一个在面试中频繁出现的设计模式,我至今不知道为什么大家那么偏
微信关注公众号JavaStorm获取最新内容。 装饰器模式(Decorator),动态地给一个对象添加一些额外的职责,就增加功能来说,装饰器模式比生成子类更为灵活;它允许向一个现有的对象添加新的功能,同时又不改变其结构。==装饰器模式属于结构型模式==。 UML类图 Component:接口,定义一个抽象接口装饰对象与真实对象具有相同的接口,以便装饰器动态的添加职责。 ConcreteCompone
很高兴,这本书总共13章,这次已经是到第9章了;同时也很遗憾,小编脱离了书本,还是不知道如何描述一个设计模式。就比如迭代器与组合模式,原书篇幅比较长,小编尽量通俗易懂些,不到之处,还请各位小伙伴参考原书,小编也欢迎和大家一起交流。 有许多种方法可以把对象堆起来成为一个集合(collection)。你可以把它们放进数组、堆栈、列表或是散列表中,这是你的
一、什么是策略模式 策略这个词应该怎么理解,打个比方说,我们出门的时候会选择不同的出行方式,比如骑自行车、坐公交、坐火车、坐飞机、坐火箭等等,这些出行方式,每一种都是一个策略。 再比如我们去逛商场,商场现在正在搞活动,有打折的、有满减的、有返利的等等,其实不管商场如何进行促销,说到底都是一些算法,这些算法本身只是一种策
一、什么是备忘录模式 备忘录这个词汇大家应该都不陌生,我就经常使用备忘录来记录一些比较重要的或者容易遗忘的信息,与之相关的最常见的应用有许多,比如游戏存档,我们玩游戏的时候肯定有存档功能,旨在下一次登录游戏时可以从上次退出的地方继续游戏,或者对复活点进行存档,如果挂掉了则可以读取复活点的存档信息重新开始。与之相类似的就是数据
一、什么是迭代器模式 迭代器这个词在Java中出现过,即Java中使用Iterator迭代器对集合进行遍历,但迭代器模式算是一个没落的模式,基本上没人会单独写一个迭代器,除非是产品性质的开发。 迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。UML结构图如下: 其中,Aggregate是聚集抽象类,负
今天,有什么经验需要分享呢?
立即撰写