![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
【设计模式】
文章平均质量分 85
gxq741718618
这个作者很懒,什么都没留下…
展开
-
设计模式—扫盲篇
一、什么是模式? 模式(Pattern)其实就是解决某一类问题的方法论。把解决某类问题的方法总结归纳到理论高度,那就是模式。模式是一种指导,在一个良好的指导下,有助于你完成任务,有助于你作出一个优良的设计方案,达到事半功倍的效果。而且会得到解决问题的最佳办法。 我们可以把设计模式理解为我们一个通过多方论证总结出来一个可供参考和使用的公式,这个公式可以在我们限定原创 2013-02-26 17:39:58 · 786 阅读 · 1 评论 -
设计模式(十五)—模版方法(行为型)
一、简介(Brief Introduction) 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模版方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤(通过把不变行为搬移到超类,去除子类中重复代码来体现它的优势)。 二、模式分析(Analysis)抽象类(AbstractClass): 定义抽象的原语操作,具体的子类将重定义它们以原创 2013-04-11 21:32:31 · 845 阅读 · 1 评论 -
设计模式(十六)—观察者模式(行为型)
一、简介(Brief Introduction) 观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,会通知所有观察者对象,使它们能够自动更新自己。例子: 用户界面可以作为一个观察者,业务数据是被观察者,用户界面观察业务数据的变化,发现数据变化后,就显示在界面上。面向对象设计的一个原则是:系统中的每个类将重点放在某一个功能上,而不是其他方面。一原创 2013-04-19 20:54:52 · 873 阅读 · 1 评论 -
设计模式(十七)—状态模式(行为型)
一、简介(Brief Introduction) 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。例子1:按钮来控制一个电梯的状态,一个电梯开们,关门,停,运行。每一种状态改变,都有可能要根据其他状态来更新处理。例如,原创 2013-04-22 21:54:32 · 754 阅读 · 1 评论 -
设计模式(十八)—备忘录模式(行为型)
一、简介(Brief Introduction) 在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。二、模式分析(Analysis)1.Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻自身的内部状态,并可使用备忘录恢复内部状态。Originator可以根据需要决定Meme原创 2013-04-23 21:16:00 · 781 阅读 · 1 评论 -
设计模式(十九)—迭代器模式(行为型)
一、简介(Brief Introduction) 提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示例子1:电视遥控器的频道遍历 二、模式分析(Analysis)Iterator(迭代器):迭代器定义访问和遍历元素的接口ConcreteIterator(具体迭代器):具体迭代器实现迭代器接口,对该聚合遍历时跟踪当前位置,跟踪聚合中的原创 2013-04-23 21:29:23 · 830 阅读 · 1 评论 -
设计模式(二十)—命令模式(行为型)
一、简介(Brief Introduction) 在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式(Command Pattern) 例子1:电视机原创 2013-04-23 21:51:21 · 944 阅读 · 1 评论 -
设计模式(二十一)—职责链模式(行为型)
一、简介(Brief Introduction) 使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。 二、模式分析(Analysis) Handler: 抽象处理者:定义出一个处理请求的接口。如果需要,接口可以定义出一个方法,以设定和返回对下家的引用。这个角色通原创 2013-04-27 18:50:23 · 904 阅读 · 2 评论 -
设计模式(二十三)—解释器模式(行为型)
一、简介(Brief Introduction) 给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子。二、模式分析(Analysis)抽象解释器:声明一个所有具体表达式都要实现的抽象接口(或者抽象类),接口中主要是一个interpret()方法,称为解释操作。具体解释任 务由它的各个实现类来完成,具体的解释器分别由终结符解释原创 2013-04-27 19:12:15 · 920 阅读 · 1 评论 -
设计模式(二十四)—访问者模式(行为型)
一、简介(Brief Introduction) 封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。 在软件开发过程中,对于系统中的某些对象,它们存储在同一个集合collection中,且具有不同的类型,而且对于该集合中的对象,可以接受一类称为访问者的对象来访问,而且不同的访问者其访问方式有所不同。例子1:顾原创 2013-04-27 19:19:09 · 1127 阅读 · 2 评论 -
设计模式(二十二)—中介者模式(行为型)
一、简介(Brief Introduction) 定义一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变他们之间的交互。例子:初中的时候大家都还没有QQ,毕业后想聚聚就特别难,我知道同学A和同学B,你知道我……,特别的混乱,大概就是下面的情景:使用QQ前:如果同学的数目多起来就会变成网状的结构。原本把原创 2013-04-27 18:58:40 · 1016 阅读 · 2 评论 -
行为型模式小结
一、定义(definition) 行为型模式是对在不同的对象之间划分责任和算法的抽象化。行为型模式不仅仅关注类和对象的结构,而且重点关注它们之间的相互作用。通过行为型模式,可以更加清晰地划分类与对象的职责,并研究系统在运行时实例对象之间的交互。行为型模式可以分为类行为型模式和对象行为型模式两种。二、使用(Use) 类或对象如何交互及如何分配职责三、联系(link原创 2013-04-27 19:43:18 · 934 阅读 · 3 评论 -
单例模式—数据库连接实战
从当初简单的学习设计模式,再到今天的实战,感觉设计模式的学习这才刚刚开始。合作时,就讨论单例模式用到哪合适?该怎么用?以前的理解太浅显了,通过每次实战来升华以前的学习,这才是真正学习的开始。下面来了解一下怎样去运用在我们的项目中。一、定义 单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。二、用途(1)机房中子窗体只需要子窗体的一个实例,不原创 2013-10-30 22:06:53 · 2953 阅读 · 20 评论 -
重温设计模式(一)—代理模式
通过这次设计模式的交流,发现无论是技术上还是思想上需要提升的空间还有很多。收获比预期的要多的多。给我触动最深的就是以下几点: 1、 面向对象的精华:抽象、封装、继承、多态 2、设计模式六大原则的运用:单一职责、开闭原则、合成聚合、依赖倒装、里氏代换、迪米特 3、让自己思绪飞翔—大胆的去想象,只有去想了、做了,你才知道最后的结果 初次学习代理模式的原创 2014-08-09 22:22:20 · 1131 阅读 · 18 评论 -
结构型模式小结
一、定义(definition) 结构型模式涉及到如何组合类和对象以获得更大的结构。结构型模式采用继承机制来组合接口或实现。结构型对象模式不是对接口和实现进行组合,而是描述了如何 对一些对象进行组合,从而实现新功能的一些方法。因为可以在运行时刻改变对象组合关系,所以对象组合方式具有更大的灵活性,而这种机制用静态类组合是不可 能实现的。二、使用(Use)原创 2013-04-11 15:20:26 · 657 阅读 · 3 评论 -
设计模式(十一)—适配器模式(结构型)
一、简介(Brief Introduction) 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 Adapter模式的宗旨:保留现有类所提供的服务,向客户提供接口,以满足客户的期望。 例子1:iphone4,你即可以使用UBS接口连接电脑来充电,假如只有iphone没有电脑,原创 2013-04-11 08:18:08 · 861 阅读 · 1 评论 -
设计模式(十二)—桥接模式(结构型)
一、简介(Brief Introduction) 使抽象部分与它的实现部分分离,使它们都可以独立的变化。实现是指抽象类和它的派生类用来实现自己的对象。当一个抽象可能有多个实现时,通常用继承来协调他们。抽象类的定义对该抽象的接口。而具体的子类则用不同的方式加以实现,但是此方法有时不够灵活。继承 机制将抽象部分与他的视线部分固定在一起,使得难以对抽象部分和实现部分独立地进行修改、扩原创 2013-04-11 09:12:04 · 1010 阅读 · 1 评论 -
设计模式(一)—简单工厂(创建型)
一、定义 简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。 该模式中包含的角色及其职责工厂(Creator)角色简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。原创 2013-03-25 21:32:48 · 816 阅读 · 2 评论 -
设计模式(四)—工厂方法(创建型)
一、模式简介(Brief Introduction) 定义一个用于创建对象的接口,让子类去决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。这样客户端就只需要了解这个接口即可。 工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。二、模式分析(Analysis)抽象原创 2013-04-03 21:38:43 · 806 阅读 · 2 评论 -
设计模式(二)—策略模式(行为型)
一、定义 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。—抽象策略角色: 策略类,通常由一个接口或者抽象类实现。—具体策略角色:包装了相关的算法和行为。—环境角色:持有一个策略类的引用,最终给客户端调用。二、图分析 Context(应用场景): 1、需要使用原创 2013-03-26 16:40:17 · 933 阅读 · 1 评论 -
设计模式(三)—装饰模式(结构型)
一、装饰模式简介(Brief Introduction) 装饰模式(Decorator)动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。 优点:把类中的装饰功能从类中搬移出去,这样可以简化原有的类。有效地把类的核心功能和装饰功能区分开了。二、装饰模式分析(Analysis)自己的理解:Component给原创 2013-03-27 09:30:12 · 815 阅读 · 3 评论 -
设计模式六大原则
学习设计模式前,应该对这六大原则有很清晰认识,然后学设计模式就能很好的去理解和把控。所有的模式都是在这些原则的基础之上发展起来的,有的是侧重一个,有的是多个都有所涉及。看完设计模式之后,我感觉到每个模式都有这些原则的影子,并且每个模式都渗透着面向对象的三大特性,也觉得这些原则也都有相通之处。原则含义具体方法单一职责就一原创 2013-03-24 21:35:33 · 661 阅读 · 2 评论 -
设计模式(五)—抽象工厂(创建型)
一、简介(Brief Introduction) 提供一个创建型一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂模式是工厂模式家族中最为抽象和最具一般性的一种形态。抽象工厂模式的用意为:给客户端提供一个接口,可以创建多个产品族中的产品对象 ,而且使用抽象工厂模式还要满足一下条件: 1)系统中有多个产品族,而系统一次只可能消费其中一族产品。原创 2013-04-09 15:21:17 · 756 阅读 · 2 评论 -
设计模式(六)—原型模式Prototype(创建型)
一、简介(Brief Introduction) 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 我们都知道,创建型模式一般是用来创建一个新的对象,然后我们使用这个对象完成一些对象的操作,我们通过原型模式可以快速的创建一个对象而不需要提供专门的new()操作就可以快速完成对象的创建,这无疑是一种非常有效的方式,快速的创建一个新的对象。原创 2013-04-09 15:41:04 · 920 阅读 · 2 评论 -
设计模式(七)—建造者模式(创建型)
一、简介(Brief Introduction) 将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示。二、模式分析(Analysis)Builder是为创建一个Product对象的各个部件指定的抽象接口。ConcreteBuilder是具体建造者,实现Builder接口,构造和装配各个部件。Director是构建一个使用Build原创 2013-04-10 07:51:37 · 1264 阅读 · 1 评论 -
设计模式(八)—单例模式(创建型)
一、简介(Brief Introduction) 保证一个类只有一个实例,并提供一个访问它的全局访问点。这一模式的目的是使得类的一个对象成为系统中的唯一实例。要实现这一点,可以从客户端对其进行实例化开始。因此需要用一种只允许生成对象类的唯一实例的机制,“阻止”所有想要生成对象的访问。使用工厂方法来限制实例化过程。这个方法应该是静态方法(类方法),因为让类的实例去生成另一个唯一实例原创 2013-04-10 08:30:02 · 1060 阅读 · 1 评论 -
创建型模式小结
在软件工程中,创建型模式是处理对象创建的设计模式,试图根据实际情况使用合适的方式创建对象。基本的对象创建方式可能会导致设计上的问题,或增加设计的复杂度。创建型模式通过以某种方式控制对象的创建来解决问题。 创建型模式由两个主导思想构成。一是将系统使用的具体类封装起来,二是隐藏这些具体类的实例创建和结合的方式。 创建型模式又分为对象创建型模式和类创建型模式。对象创建型模式处理对象的原创 2013-04-10 08:50:47 · 917 阅读 · 1 评论 -
设计模式(九)—代理模式(结构型)
一、模式简介(Brief Introduction) 为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。二、模式分析(Analysis)(1)代理角色(Proxy). 保存一个引用使得代理可以访问实体。若 RealSubject和Subject的接口相同,Prox原创 2013-04-10 09:36:05 · 1034 阅读 · 1 评论 -
设计模式(十三)—组合模式(结构型)
一、简介(Brief Introduction) 将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。例子1:就是多级树形菜单。例子2:文件和文件夹目录。例子3:部门的各层管理(学校和企业均可)二、模式分析(Analysis) 抽象构件角色(component)是组合中的对象声明接口原创 2013-04-11 09:34:31 · 784 阅读 · 1 评论 -
设计模式(十)—外观模式(结构型)
一、简介(Brief Introduction) 为子系统中的一组接口提供一个一致的界面,此模式定义了统一的高层接口。使用子系统更容易使用。 外观模式—我们通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性。二、模式分析(Analysis)角色外观角色(Facade):是模原创 2013-04-11 07:55:22 · 952 阅读 · 1 评论 -
Java实战(二)—代理模式
一、背景 当我们系统中每个方法都需要相同的功能时,比如日志、事务……;我们之前一直就是将相应都重新写一遍。如果我们共同的方法出现了问题,所有用到它的方法都必须进行修改,系统维护起来困难,并且不符合OCP原则。那该怎样去做? 常规编程:重复代码写到每个方法中 二、学习轨迹 第一次学习:设计模式(九)-代理模式(结构型) 懵懂中继续学习,理原创 2015-03-11 15:30:34 · 690 阅读 · 8 评论