C#设计模式(23种设计模式)总结
创建型:
1.单例模式:确保⼀个类仅有⼀个实例,并提供⼀个访问它的全局访问点。
2.抽象⼯⼚:提供⼀个创建⼀系列相关或相互依赖对应的接⼝,⽽⽆需指定它们具体的类。
3.建造者模式(⽣成器模式):将⼀个复杂对象的构建与它的表⽰分离,使得同样的构建过程可以创建不同的表⽰。当创建复杂对象的算法应该独⽴于该对象的组成部分以及它们的装配⽅法。
4.⼯⼚⽅法模式:定义⼀个⽤于创建对象的接⼝,让⼦类决定实例化哪⼀个类。⼯⼚⽅法使⼀个类的实例化延迟到其⼦类。
5.原型模式:从⼀个对象再创建另外⼀个可定制的对象,⽽且不需要知道任何创建的细节。
结构型:
1.适配器模式:将⼀个类的接⼝转换成客户希望的另外⼀个接⼝。使得原本由于接⼝不兼容⽽不能⼀起⼯作的那些类可以⼀起⼯作。
2.桥接模式:将抽象部分与它的实现部分分离,使它们都可以独⽴地变化。
3.装饰模式:动态地给⼀个对象添加额外的职责,就增加功能来说,装饰模式⽣成⼦类更灵活。
4.组合模式:将对象组合成树形结构以表⽰“部分-整体”得层次结构。组合模式使得⽤户对单个对象和组合对象得使⽤具有⼀致性。
5.代理模式:为其他对象提供⼀种代理以控制对这个对象得访问。
6.外观模式:为⼦系统中的⼀组接⼝提供⼀个⼀致的界⾯,此模板定义了⼀个⾼层接⼝,这个接⼝使得这⼀⼦系统更加容易使⽤(何时使⽤:⼦系统往往不断的重构演变变得越来越复杂,外部调⽤给⽤户程序带来使⽤上的困难,增加⼀个外观接⼝统⼀调⽤使新系统更加容易调⽤)
7.享元模式:运⽤共享技术有效地⽀持⼤量细粒度的对象。可以避免⼤量⾮常相类似的开销。在程式设计中,有时需要⽣成⼤量细粒度的类实例来表⽰数据。如果实例除了⼏个参数外基本都是相同的,把不同的类移到类实例的外⾯,调⽤时再传进来,就可以通过共享⼤幅度地减少单个实例的数⽬。
⾏为型:
1.策略模式:定义了算法家族,分别封装起来,让它们之间可以互相替换,算法的变化不会影响到⽤算法的客户。
⼀般使⽤简单⼯⼚结合使⽤。
2.模板⽅法模式:通过把不变的⾏为(⽅法)搬到超类,去除⼦类中重复的代码体现它的优势,代码复⽤。
单例模式的几种实现方式3.观察者模式:定义⼀个种⼀对多的依赖关系,让多个观察者对象同时监控某⼀个主题对象。当主题对象发⽣变化时会通知所有观察者对象,是它们能够主动更新⾃⼰。
4.迭代⼦模式:分离集合对象的遍历⾏为,抽象出⼀个迭代器类来负责,这样既可以做到不暴露集合的内部结构,⼜可以让外部代码透明地访问集合内部的数据。( 中 foreach就是使⽤这种模式)
5.责任链模式:当客户提交⼀个请求的时候,请求时沿着链传递直⾄有⼀个对象负责处理。链中对象并不知道链的结构,链可以简化对象之间的相互链接,它们只需要保持⼀个指向其后继者的引⽤。
6.命令模式:将⼀个请求封装为⼀个对象,从⽽是你可以⽤不同得请求对客户进⾏参数化;对请求队列或者记录请求⽇志,以及⽀持可撤销的操作。
7.备忘录模式:在不破坏封装性得前提下,捕获⼀个对象得内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原来保存得状态,在资源消耗上⽐较消耗内存。
8.状态模式:当⼀个对象得内存在状态改变时允许该百年其⾏为,这个对象看起来就像改变了其类。⽬的是消除庞⼤得条件分⽀语句,把状态变更逻辑转移到⼦类之间,减少之间相互依赖。
9.中介者模式:⽤⼀个中介对象来封装⼀系列得对象交换。中介者使各对象不需要显⽰地相互引⽤,从⽽使其耦合松散,⼆七可以独⽴地改变它们之间的交互。
10.解释器模式:
11.访问者模式:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论