HeathXian
嵌入式 分布式后端 网络安全 主机安全
展开
-
单件 singleton pattern c++
singleton pattern意图: 保证一个类仅有一个实例,并提供一个访问它的全局访问点。现实中的问题:汽车制造为例,很多不同的汽车型号使用相同的子构件,包括基本部件(车灯,雨刮,轮胎等)这些通用的功能,部...原创 2014-05-24 18:14:39 · 1066 阅读 · 1 评论 -
抽象工厂模式 Abstract Factory
意图 提供一个创建一系列 相关 或 相互依赖 对象的接口,而无需指定他们的具体类。(协调对象 的实例化)动机(例子) 假设我的项目是设计一个计算机系统,显示并打印来自数据库的几何形状。用于显示,打印 形状的分辨率类型取决于系统当前的配置。(CPU,显卡,内存大小因 素) ----根据性能选择设备驱动(促成 ab...原创 2015-04-06 12:35:13 · 966 阅读 · 0 评论 -
适配器模式 Adapter
Adapter 四人团的说法: 将一个类的接口转换成客户需要的另一个接口。Adapter模式使原本由于接口不兼容而不能在一起工作 的哪些类可以一起工作。 ———这段话的主要意思是:我们需要一种方法,为一个内容合适但接口不 匹配的对象创建一个新的接口。Adapter模式工作的例子 1,为点...原创 2015-04-15 10:42:13 · 832 阅读 · 0 评论 -
工厂方法模式 Factory Method
Factory Method (工厂方法)意图:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。Factory Method 关键特征 意图:定义一...原创 2015-04-16 10:03:30 · 943 阅读 · 0 评论 -
外观模式 Facade
意图: 四人团的说法:为了子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口, 这个接口使得这一子系统更加容易使用。动机: 将一个系统划分成为若干个子系统有利于降低系统的复杂性。一个常见的设计目标是使子系统间的 通信和相互依赖关系达到最小。达到该目标的途径之一就是引入一个...原创 2015-04-17 11:04:08 · 650 阅读 · 0 评论 -
观察者 Observer pattern
意图: 四人团说法:“定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象 都得到通知并被自动更新。” 经常,我拥有一组对象,每次一个事件发生时,这些对象都需要得到通知。(将通知者和被通知者分离开来)当某个事件发生时,你需要向一系列对象发出通知,而这个对象的列表是不断变化的。解决一对...原创 2015-09-19 17:55:22 · 807 阅读 · 0 评论 -
命令模式 command
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。适用性: 1,抽象出待执行的动作以参数化某对象。 2,在不同的时刻指定,排列和执行请求。 3,支持取消操作。 4,支持修改日志,这样当系统崩溃时,这些修改可以被重做一遍。 5,用构建在原语操作上的高层操作构造一个系统。...原创 2016-01-20 15:12:46 · 720 阅读 · 0 评论 -
备忘录 memento
意图:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将对象恢复到原先保存的状态。结构:代码:class Originator{ private string state; public string State{ get{ return state;} set{state = value;}...原创 2016-10-25 00:56:32 · 519 阅读 · 0 评论 -
uml类图 泛化 实现 依赖 关联 聚合 复合
动物类为例说明:第一层代表类名,、如果类名是斜体则代表抽象类, 第二层表示成员函数, 第三层表示成员变量。‘+’表示public成员,‘-’表示private成员,‘#’表示protect成员。泛化关系(继承关系):指一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系,用空心三角...原创 2017-02-05 15:26:38 · 3071 阅读 · 0 评论 -
创建者 Builder
Builder 结构图:Builder(生成器,建造者): 将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。 例如:砸果汁(苹果汁,雪梨汁,草莓汁)从构建过程来说都是清洗水果->榨汁机砸压->调和(热水或者沙冰)果汁就完成。 经过不同的原料,相同的创建...原创 2017-02-08 16:59:29 · 441 阅读 · 0 评论 -
原型模式 prototype
prototype(原型模式)意图: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。理解: 原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。 通过Clone()方法克隆(浅拷贝,深拷贝)返回一个对象或对象指针。例如先new一个简历对象,张三的简历,然后 可以通过张三简历对象调用Clone()方法产...原创 2017-02-11 15:28:57 · 621 阅读 · 0 评论 -
桥接模式 Bridge
意图: 将抽象部分与它的实现部分分离,使得它们都可以独立的变化。结构: 上图结构中将抽象部分(CShape的子类型)与它的实现部分(画图程序)进行解耦,也就是让 将变化隔离开,仅仅是产生线性增加,那么桥接也就是分解。代码:class CShape{public: CShape(CShape* pd); virtual void...原创 2017-02-13 23:56:31 · 507 阅读 · 0 评论 -
组合模式 composite
意图: 将对象组合成树形结构以表示整体-部分的关系,composite使得用户对单个对象的使用和组合对象的使用具有一致性。结构:代码:class CComponent{public: virtual void Add(CComponent * pTmp); virtual void Remove(CComponent * pTmp); v...原创 2017-02-15 18:01:27 · 528 阅读 · 0 评论 -
装饰模式 Decorator
意图: 动态的给一个对象增加一些额外的职责,就增加功能来说,decorator模式相比生成子类更为灵活。结构:CComponent 是定义一个对象的接口,可以给这些对象动态地添加职责。CConcreteComponent是定义了一个具体的对象,也可以给这个对象添加职责,Decorator装饰抽象类,继承了Component从外类来扩展Component类的功能,但对于CC...原创 2017-02-16 16:22:47 · 554 阅读 · 0 评论 -
享元模式 Flyweight
意图: 运用共享技术有效的支持大量细粒度的对象。结构:代码://Flyweight 可以接受并作用于外部状态abstract class Flyweight{public abstract void Operation(int extrinsicstate);}//为内部状态增加存储空间class ConcreteFlyweight: Flyweight{...原创 2017-02-17 14:23:50 · 396 阅读 · 0 评论 -
职责链模式 chain of responsibility
意图:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递改请求,直到有一个对象处理它为止。结构:代码:class CHandler{public:void SetHandler(CHanlder * pH){ m_pHandler =pH; }virtual void HandleRequest(unsig...原创 2017-02-17 18:02:10 · 379 阅读 · 0 评论 -
解释器模式 interpreter
四人团意图:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单的语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。结构:代码:abstract class AbstractExpression{ pub...原创 2017-02-18 18:06:56 · 762 阅读 · 0 评论 -
模板方法模式 template method
意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。结构:代码:abstract class AbstractClass{ public abstract void PrimitiveOperation1(); public abstract void PrimitiveOpe...原创 2017-02-18 21:45:21 · 418 阅读 · 0 评论 -
Iterator 迭代器模式
意图:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。结构:代码:abstract class Iterator{public abstract object First();public abstract object Next();public abstract bool IsDone();public abstract object Cu...原创 2017-02-21 14:53:46 · 579 阅读 · 0 评论 -
visitor 访问者模式
意图:表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。结构:代码:abstract class Visitor{public abstract void VisitConcreteElementA(ConcreteElementA elementA);public abstract void VisitCon...原创 2017-02-21 23:12:55 · 495 阅读 · 0 评论 -
mediator 中介者模式
意图:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。分析:在做软件设计时我们将一个系统分割成许多对象通常可以增加其可复用性,但是对象间相互连接的激增又会降低其可复用性。导致这种现象的原因是:大量的连接使得一个对象不可能在没有其他对象的支持下工作,系统表现为一个不可分割的整体,所以,对系统的...原创 2017-02-22 15:03:10 · 410 阅读 · 0 评论 -
软件设计原则
软件设计原则:1,单一职责原则 就一个类而言,应该仅有一个引起它变化的原因。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。在软件设计中,如果你能想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责,就应该考虑类的职责分离。细化归类...原创 2017-02-22 18:02:38 · 820 阅读 · 0 评论 -
state 状态模式
意图: 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。结构:代码:abstract class State{public abstract void Handle(Context c...原创 2017-02-27 21:38:15 · 403 阅读 · 0 评论 -
Strategy 策略模式
意图: 定义了算法家族,分别封装起来让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户。结构:代码:abstract class Strategy{ public abstract void Algorithm}class ConcreteStrategyA: Strategy{ public override void ...原创 2017-03-01 18:07:53 · 412 阅读 · 0 评论