Architecture
panpan_chen
穷则独善其身,达则兼济天下
展开
-
Composite 模式——结构模式
意图组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。适用场景你想表示对象的部分-整体层次结构你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。结构 Composite的一般结构: 参与者抽象构件角色(component):是组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为(使用转载 2015-07-27 17:10:41 · 570 阅读 · 0 评论 -
访问者——对象行为模式
意图封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。动机我们去银行柜台办业务,一般情况下会开几个个人业务柜台的,你去其中任何一个柜台办理都是可以的。我们的访问者模式可以很好付诸在这个场景中:对于银行柜台来说,他们是不用变化的,就是说今天和明天提供个人业务的柜台是不需要有变化的。而我们作为访问者,今天来银行可能是取消费流水,明天来银行可能是去办理手转载 2015-08-25 18:19:54 · 532 阅读 · 0 评论 -
模板方法——对象行为模式
意图定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。该模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。适用性1、一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。 2、各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。即“重分解以一般化”,首先识别现有代码中的不同之处,并且将不同之处分离为新的操作。最后,用一个调用这些新的操作的模板方法来替换转载 2015-08-25 17:53:45 · 578 阅读 · 0 评论 -
策略模式——对象行为模式
意图策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。适用性当存在以下情况时使用Strategy模式 1)• 许多相关的类仅仅是行为有异。 “策略”提供了一种用多个行为中的一个行为来配置一个类的方法。即一个系统需要动态地在几种算法中选择一种。 2)• 需要使用一个算法的不同变体。例如,你可能会定义一些反映不同的空间 /时间权转载 2015-08-27 18:17:18 · 509 阅读 · 0 评论 -
行为模式总结
行为模式综述行为模式是对在不同的对象之间划分责任和算法的抽象化。行为模式不仅仅是关于类和对象的,而且是关于它们之间的相互作用的。可分为类的行为模式和对象的行为模式。类的行为模式:类的行为模式使用继承关系在几个类之间分配行为 对象的行为模式:使用对象的聚合来分配行为常见行为型模式有11种:CCIIMM(Chain of Responsibility职责链、Command命令、Interpreter解原创 2015-08-27 18:20:49 · 615 阅读 · 0 评论 -
结构型模式总结
结构型模式综述通过继承和对象组合实现结构型模式,其中继承实现的是类结构型模式,对象组合实现的是对象结构型模式。注意优先使用对象组合,而不是类继承。一般常见的结构型模式有7种:ABCDFFP (Adapter, Bridge, Composite, Decorator, Façade, Flyweight, Proxy).Adapter详细链接Adapter简述将一个类的接口转换成客户希望的另外一个接原创 2015-08-18 10:33:49 · 459 阅读 · 0 评论 -
享元模式Flyweight——结构型模式
意图享元模式以共享的方式高效地支持大量的细粒度对象。享元对象能做到共享的关键是区分内蕴状态(Internal State)和外蕴状态(External State)。内蕴状态是存储在享元对象内部并且不会随环境改变而改变。因此内蕴状态并可以共享。 外蕴状态是随环境改变而改变的、不可以共享的状态。享元对象的外蕴状态必须由客户端保存,并在享元对象被创建之后,在需要使用的时候再传入到享元对象内部。外蕴状态转载 2015-08-17 18:24:14 · 471 阅读 · 0 评论 -
Facade——结构模式
意图(Intent):为子系统中的一组接口提供一个一致的界面, Facade 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。适用场景(1)设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式。 (2) 开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口。 (3) 维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一转载 2015-08-17 18:06:46 · 548 阅读 · 0 评论 -
代理模式(Proxy)——结构模式
意图为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。实用性在需要用比较通用和复杂的对象指针代替简单的指针的时候,使用 Proxy模式。下面是一些可以使用Proxy模式常见情况: 1) 远程代理(Remote Proxy)为一个位于不同的地址空间的对象提供一个本地的代理对象。这个不同的地址空间可转载 2015-08-17 18:32:45 · 662 阅读 · 0 评论 -
创建类模式总结
创建类模式主要关注对象的创建过程,将对象的创建过程进行封装,使客户端可以直接得到对象,而不用去关心如何创建对象。创建类模式有5种,分别是:单例模式:用于得到内存中的唯一对象。(详情)工厂方法模式:用于创建复杂对象。抽象工厂模式:用于创建一组相关或相互依赖的复杂对象。(详情)建造者模式:用于创建模块化的更加复杂的对象。(详情)原型模式:用于得到一个对象的拷贝。(详情),补充(深浅copy,引原创 2015-07-14 16:56:40 · 411 阅读 · 0 评论 -
thrift 小结
概述Thrift是一个跨语言的服务部署框架,最初由Facebook于2007年开发,2008年进入Apache开源项目。Thrift通过一个中间语言(IDL, 接口定义语言)来定义RPC的接口和数据类型,然后通过一个编译器生成不同语言的代码(C++,Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk和OCaml),原创 2016-03-10 14:00:30 · 11495 阅读 · 0 评论 -
RESTFul小结
RESTFul简介 REST全称是Representational State Transfer,中文意思是表述性状态转移。 它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是 HTTP 规范的主要编写者之一。 REST指的是一组架构约束条件和原则。如果一个架构符合REST的约束条件和原则,我们就称它为RESTful架构。资源与URI REST围绕资原创 2016-06-02 21:04:06 · 831 阅读 · 0 评论 -
桥连模式——对象结构模型
概述将抽象部分与实现部分分离,使它们都可以独立的变化。它是一种结构性模式,又称柄体(Handle and body)模式或者接口(Interface)模式。 当一个抽象可能有多个实现时,通常用继承来协调他们。抽象类的定义对该抽象的接口。而具体的子类则用不同的方式加以实现,但是此方法有时不够灵活。继承机制将抽象部分与他的视线部分固定在一起,使得难以对抽象部分和实现部分独立地进行修改、扩充和充用。理转载 2015-07-14 18:17:47 · 531 阅读 · 0 评论 -
迭代器——对象行为模式
意图又叫做游标(Cursor)模式。提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。适用性访问一个聚合对象的内容而无需暴露它的内部表示;支持对聚合对象的多种遍历(从前到后,从后到前);为遍历不同的聚合结构提供一个统一的接口,即支持多态迭代。结构图角色Iterator:定义迭代器访问和遍历元素的接口; ConcreteIterator:实现具体的迭转载 2015-08-25 15:46:38 · 302 阅读 · 0 评论 -
Decorator——结构型模式
意图动态地给一个对象添加一些额外的职责或者行为。就增加功能来说, Decorator模式相比生成子类更为灵活。别名包装器(Wrapper)适用性1)• 在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。2)• 处理那些可以撤消的职责。3)• 当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是转载 2015-07-27 17:58:09 · 391 阅读 · 0 评论 -
简单工厂/工厂/抽象工厂模式(创建类)
概述无论是简单工厂模式,工厂方法模式,还是抽象工厂模式,他们都属于工厂模式,在形式和特点上也是极为相似的,他们的最终目的都是为了解耦。定义一个用户创建对象的接口,让子类决定实例化哪一个。简单工厂模式又叫静态工厂模式,包括工厂,抽象产品,具体产品三个角色,是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。类图如下: 1) 工厂类角色:这是本模式的核心,含原创 2015-07-14 15:27:03 · 508 阅读 · 0 评论 -
Builder模式(创建类)
意图将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。适用性创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。创建的对象很复杂的时候(通常是由很多其他的对象组合而成)复杂对象的创建过程和这个对象的表示(展示)分离开来类图Director:是构造一个使用Builder接口的对象Client创建Director对象,并用它所想要的Builder对象进行配置原创 2015-07-14 16:28:35 · 723 阅读 · 0 评论 -
Command——对象行为模式
意图将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。动机(Motivation)在软件构建过程中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合——比如需要对行为进行“记录、撤销/重做(undo/redo)、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将转载 2015-08-25 14:51:05 · 510 阅读 · 0 评论 -
Adapter(适配器)--类对象结构型模式
意图将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适用场景:1、已经存在的类的接口不符合我们的需求; 2、创建一个可以复用的类,使得该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作; 3、在不对每一个都进行子类化以匹配它们的接口的情况下,使用一些已经存在的子类。类适配器模式——适配器继承自已转载 2015-07-14 17:37:59 · 651 阅读 · 0 评论 -
中介者——对象行为模式
意图定义一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变他们之间的交互。适用性1、一组对象以定义良好但是复杂的方式进行通信。产生的相互依赖关系结构混乱且难以理解。2、一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象。3、想定制一个分布在多个类中的行为,而又不想生成太多的子类。结构图角色Mediator:中介者接口。在转载 2015-08-25 16:16:24 · 555 阅读 · 0 评论 -
观察者——对象行为模式
意图又被称为发布-订阅Subscribe模式、模型-视图View模式、源-收听者Listener模式或从属者模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。动机将一个系统分割成一个一些类相互协作的类有一个不好的副作用,那就是需要维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦转载 2015-08-25 17:01:35 · 500 阅读 · 0 评论 -
状态——对象行为模式
意图当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。动机主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同的一系列类当中,可以把复杂的逻辑判断简单化。适用性1) 一个对象的行为取决于它的状态, 并且它必须在运行时刻根据状态改变它的行为。2) 代码中包含大量与对象状态有关的条件语句:一个操作中含有庞大的多分支的条件(if else(转载 2015-08-25 17:28:48 · 1522 阅读 · 0 评论 -
备忘录——对象行为模式
意图在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态适用性如果系统需要提供回滚操作时,使用备忘录模式非常合适。例如文本编辑器的Ctrl+Z撤销操作的实现,数据库中事务操作。结构图角色1.Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻自身的内部状态,并可使用备忘录恢复内部状态。Originator可以转载 2015-08-25 16:45:59 · 687 阅读 · 0 评论 -
职责链——对象行为模式
意图使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。适用场景1、有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定; 2、在不明确指定接收者的情况下,向多个对象中的一个提交一个请求; 3、处理一个请求的对象集合应被动态指定。结构图职责链模式角色•Handler(抽象处理者):定义出一个处转载 2015-08-25 14:04:03 · 672 阅读 · 0 评论 -
解释器——类行为模式
意图给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子。动机如果一种特定类型的问题发生频率足够高,那么可以将该问题的实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释该句子来解决问题。适用性1.当有一个语言需要解释执行,并且你可将该语言中的句子表示为一个抽象语法树,可以使用解释器模式。而当存在以下情况时该模式效果最好2.该文法的类层次结转载 2015-08-25 15:26:06 · 622 阅读 · 0 评论 -
tcp 相关总结
tcp 基础知识三次握手四次挥手数据接收数据发送tcp queuesyn 半连接 accept 全连接syn 半链接accept 全链接netstat ss 相关参数ss -nltp 查看 listen 状态ss -ant |grep ESTAB 查看链接状态ss -s 统计信息netstat -s 统计信息netstat -s | egrep "list...原创 2018-05-25 21:34:09 · 1518 阅读 · 0 评论