随笔分类 -  软件设计

设计模式,软件工程
摘要:目录意义问题用命令模式解决电机控制与输入信号耦合问题与标准命令模式的区别异同 意义 先说结论:命令模式能有效对代码模块进行解耦,增强模块的扩展性以及可移植性。 问题 为了方便说明问题,假设现在有一个电机Motor,在识别到外界信号后,通过软件控制其旋转。需要支持的旋转方式为3种:正转、反转、振动。 阅读全文
posted @ 2023-05-12 18:02 明明1109 阅读(127) 评论(0) 推荐(0) 编辑
摘要:引出问题 在基于消息包的通信协议中,通常会通过一个id或命令名来标识该消息包,程序需要根据不同的标识进行不同的解析策略,提取出想要的内容。例如,一个典型的FTP请求命令是这样的: USER anonymous\r\n 其中,"USER"是请求命令名,"anonymous"是该命令跟着的参数,"\r\ 阅读全文
posted @ 2023-03-29 21:11 明明1109 阅读(228) 评论(0) 推荐(0) 编辑
摘要:代理模式(Proxy Pattern) 简介 一个类代表另一个类的功能。创建具有现有对象的对象,以便向外界提供功能的接口。 意图 为其他对象提供一种代理以控制这个对象的访问。 特点 主要解决:在直接访问对象时带来的问题,比如说,访问的对象在远程的机器上,在面向对象系统中,有些对象由于某些原因(比如对 阅读全文
posted @ 2021-01-12 16:14 明明1109 阅读(137) 评论(0) 推荐(0) 编辑
摘要:享元模式 flyweight pattern 简介 主要用于减少创建对象的数量,以减少内容占用和提高性能。 尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。 意图 运用共享技术有效地支持大量细粒度的对象。 特点 主要解决:在有大量对象时,有可能会造成内存溢出,把其中共同的部分抽象出来,如 阅读全文
posted @ 2021-01-12 15:50 明明1109 阅读(98) 评论(0) 推荐(0) 编辑
摘要:外观模式(Facade Pattern) 简介 隐藏系统的复杂性,并向客户端提供一个可以访问系统的接口。 该模式涉及到一个单一的类,提供客户端请求的简化方法和对现有系统类方法的委托调用。 意图 为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 阅读全文
posted @ 2021-01-12 15:40 明明1109 阅读(107) 评论(0) 推荐(0) 编辑
摘要:装饰器模式(Decorator Pattern) 简介 装饰器模式允许向一个现有的对象添加新的功能,同时又不改变其结构 意图 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。 特点 主要解决:为扩展一个类经常使用继承方式,由于继承为类引入静态特征,并且随着扩展功能 阅读全文
posted @ 2021-01-12 15:28 明明1109 阅读(244) 评论(0) 推荐(0) 编辑
摘要:组合模式(Composite Pattern) 简介 组合模式,也叫部分整体模式,用于把一组相似的对象当作一个单一的对象,组合模式依据树形结构来组合对象,用来表示部分以及整体层次。属于结构型模式,创建了对象组的树形结构。 意图 将对象组合树形结构以表示“部分-整体”层次结构。使得用户对单个对象和组合 阅读全文
posted @ 2021-01-12 00:12 明明1109 阅读(307) 评论(0) 推荐(0) 编辑
摘要:过滤器模式Filter pattern,标准模式Criteria Pattern 意图 允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们链接起来。 示例 创建一个Person对象,Criteria接口和具体类,实现该接口以过滤Person对象列表。CriteriaPatter 阅读全文
posted @ 2021-01-12 00:02 明明1109 阅读(215) 评论(0) 推荐(0) 编辑
摘要:桥接模式(Bridge Pattern) 意图 将抽象部分与实现部分分离,使得它们都可以独立变化。 适用场景 一个类如果有2个维度或者多个维度的扩展,用继承没有问题,但是用桥接模式会更适合。避免2个层次之间建立静态继承联系。 什么是抽象部分,什么是实现部分? 比如,要绘制矩形、圆形、正方形,至少需要 阅读全文
posted @ 2021-01-11 23:58 明明1109 阅读(448) 评论(0) 推荐(0) 编辑
摘要:适配器模式(Adapter Pattern) 简介 作为两个不兼容接口之间的桥梁,结合了2个独立接口的功能。 意图 将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 使用场景 当系统需要使用现有的类,而类的接口不兼容时(不符合系统需要); 例子: 阅读全文
posted @ 2021-01-11 23:46 明明1109 阅读(157) 评论(0) 推荐(0) 编辑
摘要:原型模式(Prototype Pattern) 意图 指定创建对象的种类,并且通过拷贝创建新的对象。 原型模式复制的克隆对象≠原对象,内存地址段不同,但是属性状态相同。 角色 角色名称 中文名称 作用描述 Client 客户类 让一个原型克隆自身从而获得新的对象 Prototype 原型接口 声明克 阅读全文
posted @ 2018-10-17 23:51 明明1109 阅读(298) 评论(0) 推荐(0) 编辑
摘要:单例模式(Singleton Pattern) 意图 确保一个类有且仅有一个实例,并且为客户提供一个全局访问点。 特点 优点 保证被访问资源对象在内存中只有一个实例,节约了系统内存资源,也避免了对资源多重占用; 封装了访问实例方法,提供全局访问点,严格控制客户的访问方式; 通常常驻内存,不会频繁创建 阅读全文
posted @ 2018-10-15 16:16 明明1109 阅读(236) 评论(0) 推荐(0) 编辑
摘要:建造者模式(Builder Pattern) 简介 通常,在建造者Builder中包含多个不同的属性(基本类型或者别的类对象),这些属性由Builder的方法构建,由Director来组装出一种产品Product。 也就是说,Builder Pattern的目的是为了构建一个或多个Product,不 阅读全文
posted @ 2018-08-30 21:37 明明1109 阅读(694) 评论(0) 推荐(0) 编辑
摘要:抽象工厂 1. 介绍 抽象工厂是对工厂模式的抽象,抽象工厂为客户提供接口,使客户在不必指定具体产品以及它们的关联关系情况下,创建产品族中多个产品对象。 如果没有抽象工厂,当一个产品方案包含一系列关联子产品时,会难以控制:需要针对每种方案事先定义好需要的产品组合,而且调用者不得不需要知道具体的类、如何 阅读全文
posted @ 2018-08-28 23:23 明明1109 阅读(193) 评论(0) 推荐(0) 编辑
摘要:工厂模式 主要分为2种:简单工厂,工厂方法。有别于抽象工厂。 简单工厂 1. 简介 client通过给SimleFactory传不同参数,由SimpleFactory根据实际情况决定如何初始化具体的Product对象。 适用场景:替代new来创建对象;不希望client直接处理Product创建细节 阅读全文
posted @ 2018-08-23 00:56 明明1109 阅读(310) 评论(0) 推荐(0) 编辑