C#设计模式(23种设计模式)总结

创建型:

1.单例模式:确保一个类仅有一个实例,并提供一个访问它的全局访问点。

2.抽象工厂:提供一个创建一系列相关或相互依赖对应的接口,而无需指定它们具体的类。

3.建造者模式(生成器模式):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方法。

4.工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

5.原型模式:从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。

结构型:

1.适配器模式:将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

2.桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立地变化。

3.装饰模式:动态地给一个对象添加额外的职责,就增加功能来说,装饰模式生成子类更灵活。

4.组合模式:将对象组合成树形结构以表示“部分-整体”得层次结构。组合模式使得用户对单个对象和组合对象得使用具有一致性。

5.代理模式:为其他对象提供一种代理以控制对这个对象得访问。

6.外观模式:为子系统中的一组接口提供一个一致的界面,此模板定义了一个高层接口,这个接口使得这一子系统更加容易使用(何时使用:子系统往往不断的重构演变变得越来越复杂,外部调用给用户程序带来使用上的困难,增加一个外观接口统一调用使新系统更加容易调用)

7.享元模式:运用共享技术有效地支持大量细粒度的对象。可以避免大量非常相类似的开销。在程式设计中,有时需要生成大量细粒度的类实例来表示数据。如果实例除了几个参数外基本都是相同的,把不同的类移到类实例的外面,调用时再传进来,就可以通过共享大幅度地减少单个实例的数目。

 

行为型:

1.策略模式:定义了算法家族,分别封装起来,让它们之间可以互相替换,算法的变化不会影响到用算法的客户。

一般使用简单工厂结合使用。

2.模板方法模式:通过把不变的行为(方法)搬到超类,去除子类中重复的代码体现它的优势,代码复用。

3.观察者模式:定义一个种一对多的依赖关系,让多个观察者对象同时监控某一个主题对象。当主题对象发生变化时会通知所有观察者对象,是它们能够主动更新自己。

4.迭代子模式:分离集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可以让外部代码透明地访问集合内部的数据。(.net 中 foreach就是使用这种模式)

5.责任链模式:当客户提交一个请求的时候,请求时沿着链传递直至有一个对象负责处理。链中对象并不知道链的结构,链可以简化对象之间的相互链接,它们只需要保持一个指向其后继者的引用。

6.命令模式:将一个请求封装为一个对象,从而是你可以用不同得请求对客户进行参数化;对请求队列或者记录请求日志,以及支持可撤销的操作。

7.备忘录模式:在不破坏封装性得前提下,捕获一个对象得内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原来保存得状态,在资源消耗上比较消耗内存。

8.状态模式:当一个对象得内存在状态改变时允许该百年其行为,这个对象看起来就像改变了其类。目的是消除庞大得条件分支语句,把状态变更逻辑转移到子类之间,减少之间相互依赖。

9.中介者模式:用一个中介对象来封装一系列得对象交换。中介者使各对象不需要显示地相互引用,从而使其耦合松散,二七可以独立地改变它们之间的交互。

10.解释器模式:

11.访问者模式:

 

 

 

 

 

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值