设计模式
文章平均质量分 77
tingxuejianghu
这个作者很懒,什么都没留下…
展开
-
设计模式——行为型——责任链模式
一、理论我们首先看看什么是推卸责任。假设现在我们要去公司领取资料。首先我们向公司前台打听要去哪里领取资料,她告诉我们应该去“营业窗口”。然后等我们到了“营业窗口”后,又被告知应该去“售后部门”。等我们好不容易赶到了“售后部门”,又被告知应该去“资料中心”,因此最后我们又不得不赶往“资料中心”。像这样,在找到合适的办事人之前,我们被不断地踢给一个又个人,这就是“推卸责任”。“推卸责任”听起来有些贬义的意思,但是有时候也确实存在需要“推卸责任”的情况。例如,当外部请求程序进行某个处理,但程序暂时无法直接决定原创 2021-05-31 15:55:02 · 223 阅读 · 1 评论 -
设计模式——行为型——策略模式
一、理论Strategy(策略)Strategy角色负责决定实现策略所必需的接口(API)。ConcreteStrategy(具体策略)ConcreteStrategy角色负责实现Strategy角色的接口(API),即负责实现具体的策略(战略、方向、方法和算法)。-Context(上下文)负责使用Strategy角色。Context角色保存了ConcreteStrategy 角色的实例,并使用ConcreteStrategy角色去实现需求(总之,还是要调用Strategy 角色的接口(AP原创 2021-05-31 10:57:36 · 187 阅读 · 0 评论 -
设计模式——行为型——状态模式
一、理论Allow an object to alter its behavior when its internal state changes.The object will appear to change its class.当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。状态模式的核心是封装,状态的变更引起了行为的变更,从外部看起来就好像这个对象对应的类发生了改变一样。State——抽象状态角色接口或抽象类,负责对象状态定义,并且封装环境角色以实现状态切换。Co原创 2021-05-27 16:05:06 · 193 阅读 · 0 评论 -
设计模式——行为型——解释器模式
一、理论解释器模式(Interpreter Pattern)是一种按照规定语法进行解析的方案,在现在项目中使用较少,其定义如下:Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret sentences in the language.给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示原创 2021-05-27 11:45:07 · 190 阅读 · 0 评论 -
设计模式——行为型——备忘录模式
一、理论Without violating encapsulation,capture and externalize an object’s internal state so that the object can be restored to this state later.在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。Originator(生成者)Originator角色会在保存自己的最新状态时生成Memento角原创 2021-05-25 09:09:10 · 128 阅读 · 1 评论 -
设计模式——行为型——中介者模式
一、理论Define an object that encapsulates how a set of objects interact.Mediator promotes loose coupling by keeping objects from referring to each other explicitly,and it lets you vary their interaction independently.用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦原创 2021-05-25 08:35:20 · 110 阅读 · 1 评论 -
设计模式——行为型——观察者模式
一、理论观察者模式(Observer Pattern)也叫做发布订阅模式(Publish/subscribe),它是一个在项目中经常使用的模式,其定义如下:Define a one-to-many dependency between objects so that when one object changes state,all its dependents are notified and updated automatically.定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所原创 2021-05-24 16:09:05 · 120 阅读 · 0 评论 -
设计模式——行为型——迭代器模式
一、理论迭代器模式(Iterator Pattern)目前已经是一个没落的模式,基本上没人会单独写一个迭代器,除非是产品性质的开发,其定义如下:Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation.它提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节。iterator(迭代器)抽象迭代器负责定原创 2021-05-24 15:14:18 · 158 阅读 · 1 评论 -
设计模式——行为型——访问者模式
一、理论Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing the classes of the elements on which it operates.封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。主要将数据结构与数据操作原创 2021-05-24 11:52:52 · 97 阅读 · 0 评论 -
设计模式——行为型——命令模式
一、理论命令模式是一个高内聚的模式,其定义为:Encapsulate a request as an object,thereby letting you parameterize clients with different requests,queue or log requests,and support undoable operations.将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。Command(命令)C原创 2021-05-24 10:02:25 · 92 阅读 · 1 评论 -
设计模式——行为型——模板模式
一、理论Define the skeleton of an algorithm in an operation,deferring some steps to subclasses.Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm’s structure.(定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义原创 2021-05-21 11:43:43 · 77 阅读 · 0 评论 -
设计模式——结构类——代理模式
一、理论Provide a surrogate or placeholder for another object to control access to it.(为其他对象提供一种代理以控制对这个对象的访问。)Subject角色Subject角色定义了使Proxy角色和RealSubject角色之间具有一致性的接口。由于存在Subject 角色, 所以Client角色不必在意它所使用的究竟是Proxy角色还是RealSubject角色。Proxy角色Proxy角色会尽量处理来自Cl原创 2021-05-21 10:08:01 · 79 阅读 · 1 评论 -
设计模式——结构类——享元模式
一、理论享元模式(Flyweight Pattern)是池技术的重要实现方式,其定义如下:Use sharing to support large numbers of fine-grained objects efficiently.(使用共享对象可有效地支持大量的细粒度的对象。)享元模式的定义为我们提出了两个要求:细粒度的对象和共享对象。因为要求细粒度,所以不可避免地会使对象数量多且性质相近,此时我们就将这些对象的信息分为两个部分:内部状态和外部状态。内部状态指对象共享出来的信息,存储在享元信原创 2021-05-20 10:32:12 · 71 阅读 · 0 评论 -
设计模式——结构类——外观模式(门面模式)
一、理论Provide a unified interface to a set of interfaces in a subsystem. Facade Defines a higher-level interface that makes the subsystem easier to use.要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更加易于使用。Facade门面角色客户端可以调用这个角色,此角色知道子系统的所有功能和责任,一般情原创 2021-05-19 23:11:31 · 72 阅读 · 0 评论 -
设计模式——结构类——组合模式
一、理论组合模式(Composite Pattern)也叫合成模式,有时又叫做部分-整体模式(Part-Whole),主要是用来描述部分与整体的关系。Compose objects into tree structures to represent part-whole hierarchies.Composite lets clients treat individual objects and compositions of objects uniformly.将对象组合成树形结构以表示“部分-整体原创 2021-05-19 17:21:09 · 109 阅读 · 1 评论 -
设计模式——结构类——装饰者模式
一、理论Attach additional responsibilities to an object dynamically keeping the same interface. Decorators provide a flexible alternative to subclassing for extending functionality.动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。Component抽象构件Component是一个接口或者是抽原创 2021-05-19 15:04:30 · 70 阅读 · 0 评论 -
设计模式——结构类——桥接模式
一、理论Decouple an abstraction from its implementation so that the two can vary independently.将抽象和实现解耦,使得两者可以独立地变化。Bridge 模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。Abstraction——抽象化原创 2021-05-19 09:55:59 · 497 阅读 · 1 评论 -
设计模式——结构类——适配器模式
一、适配器模式Convert the interface of a class into another interface clients expect Adapter lets classes worktogether that couldn’t otherwise because of incompatible interfaces.将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。将一个类的接口转换成另一种接口,让原本接口不兼容的类可原创 2021-05-18 18:13:41 · 76 阅读 · 2 评论 -
设计模式——创建类——建造者模式
一、理论Separate the construction of a complex object from its representation so that the same construction process can create different representations.将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们, 用户不需要知道内部的具体构建细节。原创 2021-05-18 11:40:38 · 122 阅读 · 0 评论 -
设计模式——创建类——原型模式
一、原型模式Specify the kinds of objects to create using a prototypical instance,and create new objects by copying this prototype.用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建,即 对象.clone()性能优良,原型模式是在内存二进制流的拷贝,要比直接new一个原创 2021-05-18 10:21:58 · 114 阅读 · 0 评论 -
设计模式——创建类——简单工厂模式-工厂模式-抽象工厂模式
一、简单工厂模式(一)理论简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式。简单工厂模式:定义了一个创建对象的类,由这个类来封装实例化对象的行为(代码)简而言之,就是有一个专门生产某个产品的类。(二)代码比如下图中的鼠标工厂,专业生产鼠标,给参数 0,生产戴尔鼠标,给参数 1,生产惠普鼠标。mouse.javapublic interface Mouse { void sayHi();}DellMouse.javapu转载 2021-05-18 06:03:07 · 205 阅读 · 0 评论 -
设计模式——创建类——单例模式
一、概念Ensure a class has only one instance, and provide a global point of access to it.(确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。)比如 Hibernate 的 SessionFactory,它充当数据存储源的代理,并负责创建 Session 对象。SessionFactory 并不是轻量级的,一般情况下,一个项目通常只需要一个 SessionFactory 就够,这是就会使用到单例模式。二、原创 2021-05-17 16:45:15 · 107 阅读 · 0 评论 -
设计模式——七大原则
一、设计模式的目的编写软件过程中,程序员面临着来自耦合性、内聚性以及可维护性、可扩展性、重用性、灵活性等多方面的挑战,设计模式是为了让程序(软件),具有更好的:代码重用性(相同的功能代码不用多次编写)可读性 (编程规范性)可扩展性 (当需要增加新的功能时,非常方便)可靠性(当新增加功能时,对原功能没有影响)使程序呈现高内聚、低耦合的特性二、单一职责原则(Single Responsibility Principle)(一)理论There should never be more tha原创 2021-05-16 23:59:04 · 104 阅读 · 0 评论