随笔分类 -  设计模式

摘要:概述 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作 允许一个或者多个操作应用到一组对象上,解耦操作和对象本身 但为了避免不断添加功能导致类不断膨胀,职责越来越不单一,以及避免频繁地添加功能导致的频繁代码修改,我们使用访问者模式,将对象与操作 阅读全文
posted @ 2021-12-08 14:40 .NET_CJL 阅读(10) 评论(0) 推荐(0) 编辑
摘要:回到首页 概述 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。 浅复制 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对象的引用仍然指向原来的对象 深复制 深复制则可以吧引用对象的变量指向复制过的新对象 阅读全文
posted @ 2021-11-24 23:12 .NET_CJL 阅读(9) 评论(0) 推荐(0) 编辑
摘要:回到首页 概述 为其他对象提供一种代理以控制对这个对象的访问。其中所有的引用都是通过调用代理类进行实现的 代理模式 静态代理 静态代理是由程序员创建或工具生成代理类的源码,再编译代理类。所谓静态也就是在程序运行前就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了。 动态代理 动态代理 阅读全文
posted @ 2021-11-24 23:12 .NET_CJL 阅读(11) 评论(0) 推荐(0) 编辑
摘要:回到首页 概述 也被称为发布订阅模式,定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己 观察者模式的应用场景非常广泛,小到代码层面的解耦,大到架构层面的系统解耦,再或者一些产品的设计思路,都有这种模式的影子 阅读全文
posted @ 2021-11-24 23:10 .NET_CJL 阅读(60) 评论(0) 推荐(0) 编辑
摘要:编辑说明 回到首页 概述 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 类的行为是基于它的状态改变的。 状态模式是状态机的一种实现方式即可。状态机又叫有限状态机,它有 3 个部分组成:状态、事件、动作。其中,事件也称为转移条件。事件触发状态的转移及动作的执行。不过,动作不 阅读全文
posted @ 2021-11-24 23:10 .NET_CJL 阅读(9) 评论(0) 推荐(0) 编辑
摘要:回到首页 概述 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态 主要是用来防丢失、撤销、恢复等。在不违背封装原则的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便之后恢复对象为先前的状态。 结构图 代码实现 备忘 阅读全文
posted @ 2021-11-24 23:10 .NET_CJL 阅读(10) 评论(0) 推荐(0) 编辑
摘要:回到首页 概述 将对象组合成树形结构以表示‘部分’和‘整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性 主要是用来处理树形结构数据,因为其应用场景的特殊性,导致了这种模式在实际的项目开发中并不那么常用。但是,一旦数据满足树形结构,应用这种模式就能发挥很大的作用,能让代码变得非常 阅读全文
posted @ 2021-11-24 23:07 .NET_CJL 阅读(7) 评论(0) 推荐(0) 编辑
摘要:编辑说明 回到首页 概述 提供一种方法顺序访问一个集合对象中各个元素,而又不暴露该对象的内部表示 一个完整的迭代器模式一般会涉及容器和容器迭代器两部分内容。 很多编程语言都将迭代器作为一个基础的类库,直接提供出来了。在平时开发中,特别是业务开发,我们直接使用即可,很少会自己去实现一个迭代器。 结构图 阅读全文
posted @ 2021-11-24 23:06 .NET_CJL 阅读(5) 评论(0) 推荐(0) 编辑
摘要:回到首页 概述 将抽象部分与它的实现部分分离,使它们都可以独立地发生变化,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。(符合组合优于继承的设计原则) 一个类存在两个(或多个)独立变化的维度,我们通过组合的方式,让这两个(或多个)维度可以独立进行扩展。”通过组合关系来替代继承关系,避免继 阅读全文
posted @ 2021-11-24 23:06 .NET_CJL 阅读(7) 评论(0) 推荐(0) 编辑
摘要:回到首页 概述 命令模式将请求(命令)封装为一个对象,这样可以使用不同的请求参数化其他对象(将不同请求依赖注入到其他对象),并且能够支持请求(命令)的排队执行、记录日志、撤销等(附加控制)功能。 结构图 代码实现 命令 /// <summary> /// 抽象命令类 /// </summary> p 阅读全文
posted @ 2021-11-24 23:05 .NET_CJL 阅读(4) 评论(0) 推荐(0) 编辑
摘要:面向对象 面向对象编程是一种编程范式或编程风格。它以类或对象作为组织代码的基本单元,并将封装、抽象、继承、多态四个特性,作为代码设计和实现的基石 。 面向对象编程语言是支持类或对象的语法机制,并有现成的语法机制,能方便地实现面向对象编程四大特性(封装、抽象、继承、多态)的编程语言。 面向对象编程是以 阅读全文
posted @ 2021-11-24 23:01 .NET_CJL 阅读(84) 评论(0) 推荐(0) 编辑
摘要:回到首页 概述 策略模式属于行为模式 一个类的行为或其算法可以在运行时更改 它定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户 结构图 代码实现 策略类 这是说明这是说明这是说明这是说明这是说明这是说明这是说明这是说明这是说明这是说明这是说明这是说明 阅读全文
posted @ 2021-11-24 22:59 .NET_CJL 阅读(23) 评论(0) 推荐(0) 编辑
摘要:回到首页 概述 定义一个操作中的算法骨架,而将一些步骤延迟到之类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤 这里的“算法”,我们可以理解为广义上的“业务逻辑” 其核心是为了复用 结构图 代码实现 通过继承的方式 模板方法 /// <summary> /// 模板方法抽 阅读全文
posted @ 2021-11-24 22:59 .NET_CJL 阅读(33) 评论(0) 推荐(0) 编辑
摘要:回到首页 概述 使多个对象都又机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 职责链模式还有一种变体,那就是请求会被所有的处理器都处理一遍,不存在中途终止的情况。 职责链模式常用在框架开发中,用来实现框架的过滤器、拦 阅读全文
posted @ 2021-11-24 22:59 .NET_CJL 阅读(36) 评论(0) 推荐(0) 编辑
摘要:回到首页 概述 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,为这个接口使用 外观模式也可以叫为门面模式,应用场景也比较明确,主要在接口设计方面使用 结构图 代码实现 子系统 /// <summary> /// 子系统一 /// </summary> public class S 阅读全文
posted @ 2021-11-24 22:58 .NET_CJL 阅读(25) 评论(0) 推荐(0) 编辑
摘要:回到首页 概述 不必改变原类文件和使用继承的情况下,动态地给一个对象添加一些额外的职责,通过创建一个包装对象,也就是装饰来包裹真实的对象就增加功能来说,装饰模式比生成子类更为灵活。 动态地扩展一个对象的功能。并且支持多个装饰器的嵌套使用。 结构图 代码 原抽象 /// <summary> /// 抽 阅读全文
posted @ 2021-11-24 22:57 .NET_CJL 阅读(31) 评论(0) 推荐(0) 编辑
摘要:回到首页 概述 将一个类的接口转换为客户希望的另外一个接口。适配器模式使得原本由于接口不兼容二不能一起工作的那些类可以一起工作。 一般来说,适配器模式可以看作一种“补偿模式”,用来补救设计上的缺陷。应用这种模式算是“无奈之举”。如果在设计初期,我们就能协调规避接口不兼容的问题,那这种模式就没有应用的 阅读全文
posted @ 2021-11-24 22:57 .NET_CJL 阅读(33) 评论(0) 推荐(0) 编辑
摘要:回到首页 概述 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类 结构图 代码实现 产品 /// <summary> /// 抽象产品族A /// </summary> public abstract class AbstractProductA { } /// <summary> 阅读全文
posted @ 2021-11-24 22:55 .NET_CJL 阅读(31) 评论(0) 推荐(0) 编辑
摘要:编辑说明 回到首页 概述 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。 结构图 代码实现 传统建造者 产品类 public class 阅读全文
posted @ 2021-11-24 22:55 .NET_CJL 阅读(41) 评论(0) 推荐(0) 编辑
摘要:回到首页 概述 定义一个用于创建对象的接口,让之类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其之类 工厂方法模式”是对简单工厂模式的进一步抽象化,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,仅负责声明具体工厂子类必须实现的接口。 结构图 代码实现 产品 /// <summar 阅读全文
posted @ 2021-11-24 22:55 .NET_CJL 阅读(31) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示