自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (1)
  • 收藏
  • 关注

原创 行为模式总结

行为模式综述行为模式是对在不同的对象之间划分责任和算法的抽象化。行为模式不仅仅是关于类和对象的,而且是关于它们之间的相互作用的。可分为类的行为模式和对象的行为模式。类的行为模式:类的行为模式使用继承关系在几个类之间分配行为 对象的行为模式:使用对象的聚合来分配行为常见行为型模式有11种:CCIIMM(Chain of Responsibility职责链、Command命令、Interpreter解

2015-08-27 18:20:49 614

转载 策略模式——对象行为模式

意图策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。适用性当存在以下情况时使用Strategy模式 1)• 许多相关的类仅仅是行为有异。 “策略”提供了一种用多个行为中的一个行为来配置一个类的方法。即一个系统需要动态地在几种算法中选择一种。 2)• 需要使用一个算法的不同变体。例如,你可能会定义一些反映不同的空间 /时间权

2015-08-27 18:17:18 509

转载 访问者——对象行为模式

意图封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。动机我们去银行柜台办业务,一般情况下会开几个个人业务柜台的,你去其中任何一个柜台办理都是可以的。我们的访问者模式可以很好付诸在这个场景中:对于银行柜台来说,他们是不用变化的,就是说今天和明天提供个人业务的柜台是不需要有变化的。而我们作为访问者,今天来银行可能是取消费流水,明天来银行可能是去办理手

2015-08-25 18:19:54 532

转载 模板方法——对象行为模式

意图定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。该模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。适用性1、一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。 2、各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。即“重分解以一般化”,首先识别现有代码中的不同之处,并且将不同之处分离为新的操作。最后,用一个调用这些新的操作的模板方法来替换

2015-08-25 17:53:45 578

转载 状态——对象行为模式

意图当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。动机主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同的一系列类当中,可以把复杂的逻辑判断简单化。适用性1) 一个对象的行为取决于它的状态, 并且它必须在运行时刻根据状态改变它的行为。2) 代码中包含大量与对象状态有关的条件语句:一个操作中含有庞大的多分支的条件(if else(

2015-08-25 17:28:48 1522

转载 观察者——对象行为模式

意图又被称为发布-订阅Subscribe模式、模型-视图View模式、源-收听者Listener模式或从属者模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。动机将一个系统分割成一个一些类相互协作的类有一个不好的副作用,那就是需要维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦

2015-08-25 17:01:35 500

转载 备忘录——对象行为模式

意图在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态适用性如果系统需要提供回滚操作时,使用备忘录模式非常合适。例如文本编辑器的Ctrl+Z撤销操作的实现,数据库中事务操作。结构图角色1.Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻自身的内部状态,并可使用备忘录恢复内部状态。Originator可以

2015-08-25 16:45:59 686

转载 中介者——对象行为模式

意图定义一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变他们之间的交互。适用性1、一组对象以定义良好但是复杂的方式进行通信。产生的相互依赖关系结构混乱且难以理解。2、一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象。3、想定制一个分布在多个类中的行为,而又不想生成太多的子类。结构图角色Mediator:中介者接口。在

2015-08-25 16:16:24 554

转载 迭代器——对象行为模式

意图又叫做游标(Cursor)模式。提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。适用性访问一个聚合对象的内容而无需暴露它的内部表示;支持对聚合对象的多种遍历(从前到后,从后到前);为遍历不同的聚合结构提供一个统一的接口,即支持多态迭代。结构图角色Iterator:定义迭代器访问和遍历元素的接口; ConcreteIterator:实现具体的迭

2015-08-25 15:46:38 302

转载 解释器——类行为模式

意图给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子。动机如果一种特定类型的问题发生频率足够高,那么可以将该问题的实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释该句子来解决问题。适用性1.当有一个语言需要解释执行,并且你可将该语言中的句子表示为一个抽象语法树,可以使用解释器模式。而当存在以下情况时该模式效果最好2.该文法的类层次结

2015-08-25 15:26:06 622

转载 Command——对象行为模式

意图将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。动机(Motivation)在软件构建过程中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合——比如需要对行为进行“记录、撤销/重做(undo/redo)、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将

2015-08-25 14:51:05 510

转载 职责链——对象行为模式

意图使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。适用场景1、有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定; 2、在不明确指定接收者的情况下,向多个对象中的一个提交一个请求; 3、处理一个请求的对象集合应被动态指定。结构图职责链模式角色•Handler(抽象处理者):定义出一个处

2015-08-25 14:04:03 672

原创 结构型模式总结

结构型模式综述通过继承和对象组合实现结构型模式,其中继承实现的是类结构型模式,对象组合实现的是对象结构型模式。注意优先使用对象组合,而不是类继承。一般常见的结构型模式有7种:ABCDFFP (Adapter, Bridge, Composite, Decorator, Façade, Flyweight, Proxy).Adapter详细链接Adapter简述将一个类的接口转换成客户希望的另外一个接

2015-08-18 10:33:49 459

原创 定制Notepad++插件实现Fastinfoset显示

设计流程具体流程利用开源jar包,jRE自带的sax解析器实现把Fastinfoset文档转换成XML文档。生成JAR包。下载现有的Notepad++开发模板,修改模板,调用JAR包实现FIS转换参考网址利用 Notepad++ 插件技术开发直接打开 FastInfoset 格式 XML 文件java实现FIS到XML部分代码InputStream bis = new BufferedInp

2015-08-17 23:28:20 1490 1

转载 代理模式(Proxy)——结构模式

意图为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。实用性在需要用比较通用和复杂的对象指针代替简单的指针的时候,使用 Proxy模式。下面是一些可以使用Proxy模式常见情况: 1) 远程代理(Remote Proxy)为一个位于不同的地址空间的对象提供一个本地的代理对象。这个不同的地址空间可

2015-08-17 18:32:45 661

转载 享元模式Flyweight——结构型模式

意图享元模式以共享的方式高效地支持大量的细粒度对象。享元对象能做到共享的关键是区分内蕴状态(Internal State)和外蕴状态(External State)。内蕴状态是存储在享元对象内部并且不会随环境改变而改变。因此内蕴状态并可以共享。 外蕴状态是随环境改变而改变的、不可以共享的状态。享元对象的外蕴状态必须由客户端保存,并在享元对象被创建之后,在需要使用的时候再传入到享元对象内部。外蕴状态

2015-08-17 18:24:14 471

转载 Facade——结构模式

意图(Intent):为子系统中的一组接口提供一个一致的界面, Facade 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。适用场景(1)设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式。 (2) 开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口。 (3) 维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一

2015-08-17 18:06:46 548

原创 CL——Windows下命令行运行C/C++

环境配置环境要求成功安装VS具体配置配置思路借鉴vs编译器自身设置的包含目录,引用目录,可执行目录等设置环境变量。(注意不同编译环境的参数不同,具体不同参见VS提供的宏) 项目->属性->VC++目录->常规,任意选某一个值点击 编辑,查看具体宏对应的实际路径64位系统配置设置环境变量 lib ,include,pathlib=“C:\Software\VS2013\VC\lib\amd64;C:

2015-08-03 23:26:47 2810

原创 JNI——Java调用DLL

基本概念JNI其实是Java Native Interface的简称,也就是java本地接口。它提供了若干的API实现了和Java和其他语言的通信(主要是C&C++)。对于那些对性能要求比较高的Java程序或者Java无法处理的任务无疑是一个很好的方式。实验方案假设我们的Java程序为J2C.java,C程序为J2C.c,Java与C之间的通信函数名为write2proc; write2proc的

2015-08-03 23:08:04 610

Notepad++插件实现Fastinfoset显示

notepad++插件,实现fastinfoset在notepad++中的直接打开。 下载资源解压后直接copy到notepad++安装目录的plugins的根目录下

2015-08-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除