用于把一组相似的对象当作一个单一的对象
设计模式-备忘录模式
在不破坏封装性的前提下, 捕获一个对象的内部状态, 并在该对象之外保存这个状态
设计模式-适配器模式
将一个类的接口转换成客户希望的另外一个接口
主要解决在软件系统中,常常要将一些”现存的对象”放到新的环境中,而新环境要求的接口是现对象不能满足的。
1、系统需要使用现有的类,而此类的接口不符合系统的需要。
2、想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作,这些源类不一定有一致的接口。
3、通过接口转换,将一个类插入另一个类系中
DataAdapter
设计模式-状态模式
当一个控制对象状态转换的条件表达式过于复杂时, 将状态的判断逻辑转移到表示不同状态的一系列类中
当代码中包含大量与对象状态有关的条件语句时, 使用状态模式
设计模式-观察者模式
定义了一种一对多的依赖关系,当一个对象的状态发生改变时,其所有依赖者都会收到通知并自动更新。
设计模式-建造者模式
使用多个简单的对象一步一步构建成一个复杂的对象
将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示
设计模式-外观模式
隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口
降低访问复杂系统的内部子系统时的复杂度,简化客户端之间的接口。
设计模式-模板方法模式
一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中
把不变的部分移至父类, 去除子类重复代码
设计模式-原型模式
原型模式是用于创建重复的对象,同时又能保证性能, 当直接创建对象的代价比较大时例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。
设计模式-代理模式
创建具有现有对象的对象,以便向外界提供功能接口。用于解决直接访问对象时带来的问题
设计模式-策略模式
定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。
在有多种算法相似的情况下,使用 if…else 所带来的复杂和难以维护。
策略模式相对简单工厂耦合度更低, 只需要开放一个类给客户端
无论是简单工厂还是策略模式都没有消除switch, 若想消除可用反射, 参考抽象工厂模式
设计模式-装饰模式
装饰模式:
把所需的功能按正确的顺序串联起来
动态的给一个对象添加一些职责
Git设置git diff用Codecompare
本文字数: 523 阅读时长 ≈ 1 分钟
Git配置
打开.gitconfig
1 | [difftool "codecompare"] |
设计模式-抽象工厂
抽象工厂, 将工厂抽象出来
工厂方法模式和抽象工厂模式都是创建型设计模式,它们的主要区别在于所创建的对象范围不同。
工厂方法模式(Factory Method)通过让子类实现工厂接口,来决定具体应该创建哪一个产品类的实例对象。它允许我们在不改变现有代码基础上添加新的产品类型,并且可以将具体产品的实现与调用方分离开来。
抽象工厂模式(Abstract Factory)与工厂方法模式类似,也是用于创建一系列相关的对象。不同之处在于,抽象工厂是针对多个产品族而言的,即每个工厂可以创建多种不同类型的产品。这样的话,抽象工厂为创建一组相关或独立的对象提供了一种方式。
工厂方法模式通常只针对一个抽象产品类进行创建,而抽象工厂模式则需要针对多种抽象产品进行创建。
设计模式-工厂方法
设计模式-简单工厂
一个工厂类创建所有产品
Git常用命令
本文字数: 1.1k 阅读时长 ≈ 1 分钟
基础命令
1 | git commit --amend #合并并修改上次提交 |
CSharp bit循环移位
本文字数: 591 阅读时长 ≈ 1 分钟
示例
1 | /// <summary> |
CSharp复习-子线程更新MainForm
本文字数: 372 阅读时长 ≈ 1 分钟
示例
1 |
|
CSharp Semaphore 信号量
本文字数: 1.7k 阅读时长 ≈ 2 分钟