设计模式
mr.chenyuelin
纯属为个人笔记
展开
-
c#设计模式-结构型模式-7.代理模式
代理模式:为其它对象提供一个代理的访问简单讲这件事不能由我来做,应该交给一个合适的人来做例子,比如某明星不火了想炒作一下,这件事肯定不是明星在做,而是交给经纪人来做,经纪人就是代理人,然后明星就出现在发布会上,其实我也是个受害人呀,将事情交给合适的对象做可以避免不必要的问题using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;原创 2021-05-26 21:51:46 · 96 阅读 · 0 评论 -
c#设计模式-结构型模式-6.享元模式
享元模式:共享之前创建过的对象,对象复用看例子吧例子,就是比如我需要20个上兵,一半是陆军,一半是海军,我们不是new20个对象,而是如果创建的是陆军的对象,如果之前创建过陆军对象,就不需要重新new了,直接从list中取就好了,遇到新的兵种时,再加到list里,然后下一次就不需要new了,重复这个过程using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Th原创 2021-05-26 20:52:56 · 104 阅读 · 0 评论 -
c#设计模式-结构型模式-5.外观模式
外观模式:定义一个高层接口,为子系统提供一个一致的界面其实就是客户端调用最上层的接口,其他类均在这个接口里通过组合方式使用例子,比如我们购买商品,需要一些验证:1、身份验证安全,没有认证是无效用户。2、系统安全,检查系统环境,防止注入、跨站和伪造等攻击3、网银安全,检查付款地址的有效性,检查网关是否正常using System;using System.Collections.Generic;using System.Linq;using System.Text;using Syste原创 2021-05-26 19:45:34 · 91 阅读 · 0 评论 -
c#设计模式-结构型模式-4.组合模式
组合模式:将对象组合成树形结构以表示“整体-部分”的关系比较形象的比喻,俄罗斯套娃例子,比如一个文件下有ppt,word,子文件夹,子文件下又可以装东西一个公司下可以有很多部门,部门下有员工如果当前节点为word就不能创建文件夹了,只能编辑,所以组合模式分为透明式和安全式透明式:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.原创 2021-05-26 17:51:12 · 133 阅读 · 0 评论 -
C#设计模式-结构型模式-3.装饰者模式
装饰者顾名思义就是对一个类添加一些额外的装饰(功能)结构图:具体装饰类concreteDecorate就是我们要添加的功能例子,比如我们盖了一个房子,我们想要装修房子,更安全或者更好看using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 装饰者模式{ //房子抽象接口,component类型原创 2021-05-25 20:57:19 · 107 阅读 · 1 评论 -
c#设计模式-结构型模式-2.桥接模式
桥接模式用于将抽象化和实现化解耦,使得两者可以独立变化。其实两个都是抽象的部分,一个事务多个维度的变化分离在面向对象中用通俗的话说明:一个类可以通过多角度来分类,每一种分类都可能变化,那么就把多角度分离出来让各个角度都能独立变化,降低各个角度间的耦合结构图:例子,我们想让不同数据库版本在不同的平台上运行,当然里面的方法内容也不一样abstraction充当我们的数据库,而implementor充当对应的平台代码核心:在抽象化角色里利用组合引用实现化角色的接口,也就是桥梁using System原创 2021-05-25 18:26:14 · 187 阅读 · 1 评论 -
c#设计模式-结构性模式-1.适配器模式
创建型:解决对象创建问题结构型:解决类和对象的组合关系的问题适配器模式:将一个类的接口,转换成客户端希望的另外一种接口,适配器作为原始接口(我们的类中本来具有的功能)和目标接口(客户端希望的功能)之间的桥梁例子,我像让我手机的两孔插头插到排插上的3孔插座,我们需要一个“转接头”,转接头充当我们的适配器适配器模式有两种类型:类适配器和对象适配器,类适配器通过多重继承实现接口的匹配,C#不支持多重继承,我们不考虑。我们主要介绍对象适配器。首先说明介绍适配器模式的三个角色:Adaptee:初始角色,实现原创 2021-05-24 22:27:16 · 124 阅读 · 0 评论 -
c#设计模式-创建性模式-3.原型模式
原型模式:当我们需要创建相同类的实例时,创建好一个实例后,其它的通过拷贝获取就原型接口和具体原型类,具体原型类多写一个克隆方法而已解决问题:当一个类的实例化过程很复杂或昂贵,反复new创建实例会增加创建类与客户端代码的耦合度,所以我们需要克隆例子,孙悟空只要吹一下毛就可以变出很多猴子,可以一部分保护师傅,一部分战斗using System;using System.Collections.Generic;using System.Linq;using System.Text;using Sy原创 2021-05-23 22:05:25 · 105 阅读 · 0 评论 -
c#设计模式-创建性模式-2.建造者模式
建造者模式:将一个复杂对象将构造与其表示分离,使得同样构造过程创建不同表示例子,一个车由窗户、引擎、车轮等等子物体构成,用户选择好对应的车子品牌之后,指导者就建造哪个牌子的车using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 建造者模式{ //指挥者,类似老板,可在客户端决定建造哪个牌子的车原创 2021-05-23 12:29:45 · 119 阅读 · 1 评论 -
c#设计模式-创建性模式-1.简单工厂、工厂方法、抽象工厂模式
目录简单工厂模式工厂方法模式抽象工厂模式简单工厂模式现实中的工厂负责生产产品,顾名思义,编程中的简单工厂就是一个生产对象的类,它的主要作用是创建具体的产品类实例。我们以一个生产鼠标为例来分析简单工厂的作用,鼠标有两种:戴尔鼠标和惠普鼠标,代码如下:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 简单转载 2021-05-22 12:07:34 · 253 阅读 · 0 评论 -
c#设计模式及-行为性模式-10.备忘录模式
备忘录模式:在不破坏封装的前提下,捕获一个对象的内部状态,并在对象之外保存该状态。等需要的时候可以将对象恢复到原先保存的状态例子,我在看手机联系人列表,突然不小心把某个联系人删掉了,就可以用备忘录恢复联系人列表using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 备忘录模式{ //联系人,数据原创 2021-05-21 20:19:17 · 87 阅读 · 1 评论 -
c#设计模式-行为性模式-9.责任链模式
责任链模式:避免请求者和接收者耦合在一起,让多个对象都有可能接受请求,这些对象通过一个链连接,沿着这条连传输请求,直到没有对象处理结束例子,比如公司采集物品,不同金额需要不同权限的人来审批,金额小于1000部门经理审批,大于1000需财务经理审批图的话就没有了,因为还是不同对象继承一个接口,根据请求的金额决定要不要往高层的对象传递核心的两句: manager.nextApprover = finalcialManager; finalcialManager.nextApp原创 2021-05-21 10:50:37 · 465 阅读 · 2 评论 -
c#设计模式-行为性模式-8.策略模式
策略模式:定义一系列算法,把它们封装起来,使得算法可独立于它们的用户而变化例子:公司里不同职位工资不一样,普通员工工资低点,而高管工资高点类图:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 策略模式{ public sealed class SalaryContext {原创 2021-05-21 09:54:50 · 135 阅读 · 2 评论 -
c#设计模式-行为性模式-7.状态模式
状态模式就是一个对象的状态改变时,它的行为也会改变使用情况:(1)、对象的行为依赖于它的状态(属性)并且可以根据它的状态改变而改变它的相关行为。(2)、代码中包含大量与对象状态有关的条件语句,这些条件语句的出现,会导致代码的可维护性和灵活性变差,不能方便地增加和删除状态,使客户类与类库之间的耦合增强。在这些条件语句中包含了对象的行为,而且这些条件对应于对象的各种状态比如:1个订单,用户下单,商家受理,商家发货,确认收货,收货成功这几个状态,当然用户也可以选择取消订单(不签收)的状态通过实现同一个S原创 2021-05-19 22:28:30 · 933 阅读 · 6 评论 -
c#设计模式-行为性模式-6.中介者模式
中介者模式,定义了一个中介对象来封装一系列对象之间的交互关系,中介者使各个对象之间不需要显式地相互引用,从而降低耦合简单记忆:一对多变成一对一比如:这时是赢家找输家要钱 赢家a和输家b是直接通信的。当玩家比较多的时候,例如a赢了,bcde四个玩家都会输5元,那么a就要和bcde玩家都要通信。如果我们引入一个中间人来负责统一结算,赢家就可以直接找中间人结算,不必直接找所有的输家要账了图:用到的c#知识”1.当父类为抽象类时,子类构造函数必须要调用父类构造函数以完成父类初始化2.构造函数也可以在转载 2021-05-19 21:02:19 · 116 阅读 · 0 评论 -
c#设计模式-行为性模式-5.命令模式
比如,奶奶今天想吃饺子,将命令发布给爸爸,爸爸就得去做饺子奶奶属于请求者角色,发布做饺子命令为具体命令,爸爸充当接收者角色其实命令模式就是请求者将要做的事情告诉接收者,中间需要经过一个抽象命令接口,然后具体实现如图:例子:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 命令模式{ /原创 2021-05-18 21:27:39 · 164 阅读 · 1 评论 -
c#设计模式-行为性模式-4.模板方法模式
提到模板我们经常会想到简历模板/PPT模板等,以简历模板为例,不同的人可以使用一样的简历模板,在填充内容时根据自己的名字/工作经历等填写自己的内容,从而形成不同的简历。在OO中模板方法模式和现实中的模板十分相似,首先要有一个封装了不可变部分的抽象类(简历的大致结构,都有姓名、性别、年龄、工作经历等),然后将可变部分延迟到子类中(不同人的简历内容不同,这些不同的内容放在子类中实现),模板方法就是多态的一种实现。抽象类中模板方法不仅仅可以定义内容的,也可以定义执行的顺序。以游戏厅打游戏为例,我们去游戏厅不管玩转载 2021-05-18 18:10:57 · 79 阅读 · 0 评论 -
c#设计模式-行为性模式-3.迭代器模式
迭代器模式的实现:提供一种方法顺序访问1个聚合对象(类)的各个元素,而不暴露内部的表示先看下数组的遍历:using System;using System.Collections;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 迭代器模式{ class Program { static vo转载 2021-05-18 17:23:35 · 62 阅读 · 0 评论 -
c#设计模式-行为性模式-2.观察者模式
观察者模式是一种通知依赖关系,一个对象的状态发生改变,所有依赖的对象(观察者)都将得到通知并自动更新优点:1.观察者模式实现了表示层与逻辑层的分离2.观察者与被观察者之间建立一个抽象的耦合,被观察者不知道任何一个具体的观察者,只是保存在列表中3.支持广播通信缺点:1.当被观察者有很多观察者时,通知所有观察者会很浪费时间,当然可以筛选2.观察者模式不知道观察的对象是怎样发生变化的3.被观察者有循环依赖的话,被观察者会1触发它们进行循环调用using System;using System原创 2021-05-17 22:25:48 · 113 阅读 · 2 评论 -
c#设计模式-1.单例模式
我猜你会这样写(因为我第一次这样写):public class Test : MonoBehaviour{ private static AStarManager instance = null; public static AStarManager Instance { get { if (instance == null) { instance = new AStarMa原创 2021-04-19 22:00:43 · 322 阅读 · 1 评论