3 创建型模式
3.1 抽象工厂(abstract factory)
根据客户端选择的风格类型,创建对应的一整套对象;工厂类对一个对象风格进行封装,每个风格对应一个对象实现方式,对应业务端请求,需指定风格参数,生产一整个对象,每个对象可由多个组件构成;各个风格对象也构成父子类关系;
各类风格由工厂父类提供客户端访问接口,生产各类风格的对象的类继承父类,实现接口;
3.2 生成器(builder)
流式的处理过程;builder部分与抽象工厂描述相似,不过该方法前期分析构造一个builder,由builder按一定顺序处理对象,builder根据前期分析类型,由对应的子类处理;
3.3 工厂方法(factory method)
已3.1类似,不过无组合,专注于单个对象情况
3.4 原型(prototype)
用原型实例事先创建对象,并通过克隆原型创建新的对象,需关注原型管理器,克隆操作,初始化克隆对象(重设相关值);
3.5 单件(singleton)
保证一个类仅有一个实例,并提供一个访问它的全局访问点;c++中实现时,对默认构造函数设置为保护模式,避免创建该类对象;其次还可以定义单件列表(单件注册表)
4 结构型模式
4.1适配器(adapter)
将一个类的接口转换成客户希望的另外一个接口,一般适用于已经存在一个类,而他的接口不符合你的需求,则可以通过适配器转换已经存在类的接口;或者想创建一个可复用的类,该类与其他不相关类可协同工作;
实现方法主要有通过多重继承或者对象适配器;
4.2桥接(bridge)
将抽象部分与实现部分分离,比如对象A由对象B组成,但是B可能有多个实现,故对对象B建立一个抽象类,在对象A中创建一个指向对象B抽象类指针,而后具体实现抽象类B的具体子类;
4.3组成(composite)
将对象组合成树形结构以表示“部分-整体”的层次管理;即某个子类或父类有指向父类的对象,进而形成一个递归的类组成关系;
4.4装饰(decorator)
动态地给一个对象添加一些额外的职责,模式与组成类似,不过只是在原对象上添加一些修饰功能,不影响原始功能,如lucence中的tokenstream类
4.5外观(facade)
为系统中一组接口提供一个一致对外的界面,使子系统更加容易使用,降低系统的复杂度;
4.6享元(flyweight)
使用共享技术有效地支持大量细粒度的对象,如文档中对每一个字母创建一个flyweight,每个flyweight存储一个字符,其他的格式由其他对象处理,节约空间;
4.7代理(proxy)
对其他对象提供一种代理以控制对这个对象的访问,代理的常见模式有如下几种:
1)远程代理:为一个对象在不同的地址空间提供局部代表;
2)虚代理:根据需要创建一个开销很大的对象,仅在实际需要的时候载入实际对象;
3)保护代理:控制对原始对象的访问;
4)智能指引:在指针对象上添加一些附加操作,如引用计数,第一次访问时载入内存,锁定等操作;
5 行为模式
行为模式涉及算法和对象的职责分配,不仅描述对象或类的模式,还描述它们之间的通信模式;
5.1职责链(chain of responsibil ity)
使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系;对象间形成链式结构;
5.2 命令(command)
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;
5.2解释器(interpreter)
5.3迭代器(iterator)
5.4中介者(mediator)
5.5备忘录(

本文深入探讨了面向对象编程中的五大设计模式:抽象工厂、生成器、工厂方法、原型和单件模式,以及结构型模式中的适配器、桥接、组成、装饰和外观模式,详细解释了每种模式的原理、实现方法和应用场景。
2494

被折叠的 条评论
为什么被折叠?



