LilyCoder
生命不息,编码不止!
展开
-
C#设计模式之命令模式实例源码
命令模式定义命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志。以及支持可撤销的操作。说白了,就是将一系列的请求命令封装起来,不直接调用真正执行者的方法,这样比较好扩展。命令模式常用类Command(抽象命令类):抽象出命令对象,可以根据不同的命令类型。写出不同的实现类ConcreteCommand(具体命令类):实现了抽象命令对象的具体实现Invoker(调用者/请求者):请求的发送者,它通过命令对象来执行请求。一个调用者并不需要在设计时确定其原创 2021-09-24 13:50:36 · 118 阅读 · 0 评论 -
C#设计模式之适配器模式实例代码
适配器模式是通过一个类的接口转换成客户希望的另外一个接口,使原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适配器从结构上可以分为类适配器和对象适配器。其中类适配器使用继承关系来对类进行适配,而对象适配器是使用对象引用的方法来进行适配的。 C#实现类适配器时,目标只能是接口。实现对象适配器时,目标可以是抽象类也可以是接口。using System;using System.Collections.Generic;using System.Text;namespace 适配器模式{原创 2021-01-12 14:15:11 · 128 阅读 · 0 评论 -
C#观察者模式实例源码
定义观察者模式,有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。优点:一、通知通信观察者模式支持广播通信。被观察者会向所有的注册过的观察者发出通知。二、聚耦合观察者模式在被观察者和观察者之间建立了一个抽象的耦合,被观察者并不知道任何一个具体的观察者,只是保存着抽象观察者的列表,每个具体观察者都符合一个抽象观察者的接口。缺点:一、时间复杂度如果一个被观察者对象有原创 2020-11-29 12:53:11 · 210 阅读 · 0 评论 -
C#解释器模式实例源码
1.给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。2、解释器模式的优点1)易于改变或扩展文法;2)实现文法较为容易;3)符合开闭原则。4、解释器模式的缺点1)对于复杂文法难以维护;2)执行效率较低。 class Program { static void Main(string[] args) { PlayContext context = new PlayContext();原创 2020-11-29 12:46:00 · 172 阅读 · 0 评论 -
C#迭代器模式实例源码
什么是迭代器模式?迭代器模式是针对集合对象而生的,对于集合对象而言,肯定会涉及到对集合的添加和删除操作,同时也肯定支持遍历集合元素的操作,我们此时可以把遍历操作放在集合对象中,但这样的话,集合对象既承担太多的责任了,面向对象设计原则中有一条就是单一职责原则,所有我们要尽可能地分离这些职责,用不同的类取承担不同的责任,迭代器模式就是用迭代器类来承担遍历集合的职责。定义:迭代器模式提供了一种方法顺序访问一个聚合对象中的各个元素,而又无需暴露该对象的内部实现,这样既可以做到不暴露集合的内部结构,又可让外部代码原创 2020-11-02 15:00:27 · 125 阅读 · 0 评论 -
C#设计模式之访问者模式实例源码
namespace 访问者模式{ class Program { static void Main(string[] args) { ObjectStructure o = new ObjectStructure(); o.Attach(new Man()); o.Attach(new Woman()); Success v1 = new Success();原创 2020-10-03 15:07:17 · 125 阅读 · 0 评论 -
C#状态模式原理及代码实例
一.状态模式的定义:状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。二.状态模式的意图:允许一个对象在其内部状态改变时改变它的行为。三.状态模式的适用场景:1.一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。2.一个操作中含有庞大的多分支结构,并且这些分支决定于对象的状态。namespace 状态模式{ class Program { static原创 2020-07-18 14:42:20 · 228 阅读 · 0 评论 -
C#建造者模式原理及代码实例
class Program { static void Main(string[] args) { Director director = new Director(); Builder b1 = new ConcreteBuilder1(); Builder b2 = new ConcreteBuilder2(); director.Construct(b1); ..原创 2020-07-16 12:36:28 · 143 阅读 · 0 评论 -
C#简单工厂模式之控制器计算器
1.创建运算基类 public abstract class Operation { public int NumberOne { get; set; } public int NubmerTwo { get; set; } public Operation(int a, int b) { this.NumberOne = a; this.NubmerTwo = b;原创 2020-07-11 16:37:56 · 208 阅读 · 0 评论