刷新
设计模式(十五)解释器

博主头像 一、定义 定义一个语言的文法,并且建立一个解释器来解释该语言中的句子,这里的“语言”是指使用规定格式和语法的代码。解释器模式是一种行为型模式。 二、描述 解释器模式是一种使用频率相对较低但学习难度较大的设计模式,它主要用于描述如何使用面向对象语言构成一个简单的语言解释器,包含以下四个角色: 1、Ab ...

写代码不用"if"行不行,曾经的反 if 运动

博主头像 如果在IT行业的时间够长的话,可能还记得大约10几年前,设计模式风靡一时的时候,有过一段反 "if" 的运动。 所谓的反"if"运动,其实是夸大了"if"语句带来的问题,比如当时提出的问题有: 代码不好维护,特别是if或者else中的代码比较多的时候 if和 else if分支太多的时候,代码难以阅 ...

c#中命令模式详解

基本介绍: 命令模式,顾名思义就是将命令抽象化,然后将请求者和接收者通过命令进行绑定。 而命令的请求者只管下达命令,命令的接收者只管执行命令。 从而实现了解耦,请求者和接受者二者相对独立。 单独理解起来比较困难,咱们还是通过具体实例来说明吧。 举例说明: 生活中遥控控制电器就是命令模式,比如智能开关 ...

c#中责任链模式详解

基本介绍: “责任链”顾名思义,是指一个需要负责处理请求的链条。 每个链条节点都是一个单独的责任者,由责任者自己决定是否处理请求或交给下一个节点。 在设计模式中的解释则为:为请求创建了一个接收者对象的链。适用于有多个对象可以处理同一个请求,但具体由哪个对象处理则在运行时动态决定的情况。 俗话说起来就 ...

c#中代理模式详解

基本介绍: “代理”顾名思义指以他人的名义,在授权范围内进行处理事情的意思。 在编程语言中的则解释为:为其他对象提供一种代理以控制对这个对象的访问。 从释义上不难解读,代理本质就是一个中介,客户通过中介来访问原对象。本质就是在原对象基础上包了一层封装。 那么问题来了,为什么不直接使用原对象,反而多此 ...

设计模式(十二)代理

博主头像 一、定义 给某一个对象提供一个代理或占位符,并由代理对象控制对原对象的访问。代理模式是一种结构型模式。 二、描述 代理模式的结构比较简单,其核心是代理类,为了让客户端能够一致性地对待真实对象和代理对象,在代理模式中引入了抽象层。包含以下三个角色: 1、Subject(抽象主题角色):它声明真实主题和 ...

c#桥接模式详解

基础介绍: 将抽象部分与它的实现部分分离,使它们都可以独立地变化。适用于不希望在抽象和实现部分之间有固定的绑定关系的情况,或者类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充的情况。 将抽象部分与实现部分分离,使它们都可以独立地变化。 其实两个都是抽象的部分,更准确的说,是将一个事物中多个维 ...

c#组合模式详解

一、基础介绍: 组合模式用于表示部分-整体的层次结构。适用于希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象的情况。 顾名思义,什么叫部分-整体,比如常见的前端UI,一个DIV标签中可以存在多个A标签、P标签、DIV标签等等。 相较于DIV这个容器整体而言,其中所含的A标签 ...

c#装饰器模式详解

一、基础介绍: 动态地给一个对象添加一些额外的职责。适用于需要扩展一个类的功能,或给一个类添加多个变化的情况。 装饰器,顾名思义就是在原有基础上添加一些功能。 大家都只知道如果想单纯的给原有类增加一些功能,可以直接继续该类生成一个子类就可以。 举个例子,如果现在有个手机类,想给手机贴膜,传统的做法就 ...

c#中适配器模式详解

一、基础介绍: 想象这样一个场景,原项目中接口返回的数据是XML格式的数据,但现在来了一个新客户,它期望接口返回的数据类型为json格式的。 想要实现要么就是改原有接口,但这样就违反了开闭原则,容易出现未知bug,影响到老客户的正常使用。 而如果写一个适配器类也就是转换类(第三方类),将原本返回的X ...

设计模式(十一)享元

博主头像 一、定义 运用共享技术有效地支持大量细粒度对象的复用,享元模式是一种结构型模式。 二、描述 享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式。享元模式的结构较为复杂,一般结合工厂模式一起使用,在其结构图中包含了一个享元工厂类,包含以下四个角色: 1、Flyweight(抽象享元类) ...

c#中原型模式详解

一、基础介绍: 具体可分为2个角色: Prototype(原型类):声明一个Clone自身的接口; ConcretePrototype(具体原型类):,实现一个Clone自身的操作。 在原型模式中,Prototype通常提供一个包含Clone方法的接口,具体的原型ConcretePrototype使 ...

设计模式六大原则

博主头像 前言 什么是设计模式? 设计模式是软件设计人员、软件开发人员在程序代码编写中总结出来的一套编码规范,设计模式起一个指导作用,用来指导我们写出高内聚低耦合,具有良好的可扩展性和可维护性的代码。 为什么要学设计模式? 当然,设计模式不是非学不可,不了解设计模式一样可以在工作中写出符合产品要求的功能。但是 ...

c#中建造者设计模式详解

一、基础介绍: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 说白了就是将一个复杂的对象拆分成一个一个零件,然后按照既定顺序和规则进行组装,最终形成这个相对复杂的对象。 具体可分为4个角色: Product(产品):复杂对象本身。 Builder(抽象建造者):既可以是 ...

c#中工厂模式详解

一、总体介绍: 工厂模式主要有三种类型:简单工厂、工厂方法和抽象工厂,该模式用于封装和管理对象的创建,是一种创建型模式。 万物皆对象,创建对象时必然需要new该对象,当需要更改对象时,需要把项目中所有地方都修改一遍,这显然违背了软件设计的开闭原则。 如果使用工厂来生成对象,那么我们只需要跟工厂打交道 ...

c#中单例模式详解

一、基础介绍: 确保一个类只有一个实例,并提供一个全局访问点。 适用于需要频繁实例化然后销毁的对象,创建对象消耗资源过多,但又经常用到的对象,频繁访问数据库或文件的对象。 其本质就是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个。 特性和功能:确保一个类只有一个实例,并提供一 ...

c#享元模式详解

一、基本介绍: 享元模式的定义:运用共享技术有效地支持大量细粒度的对象重复使用。适用于大量小粒度的对象造成的运行效率和内存使用效率低下的情况。 “享元”顾名思义,“享”共享的意思,“元”单元,最小对象,零部件的意思。 即从字面意思不难看出,该模式旨在共享一些零部件供其使用。 想要实现对这些零部件的重 ...

设计模式(十)外观

博主头像 一、定义 为子系统中的一组接口提供一个一致的入口,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式是一种结构型模式。 二、描述 包含以下两个角色:1、Facade(外观角色):在客户端可以调用它的方法,在外观角色中可以知道相关的(一个或多个)子系统的功能和责任;在正常情况下, ...

<1234···6>