C#设计模式总结
时间:2015-09-22 ┊ 阅读:9,670 次 ┊ 标签: 经验 , 分享 , 设计
设计模式这种东西,概念性太重,理解起来费劲,可是话又说回来了,如果没有再码农的世界里被需求反复修改的折腾,也不会深刻的认识到模式的重要性。
以下是多年前学习设计模式时候总结的,现在看来还是有收获的。(起码记住这些能把多数面试官说蒙。。。)
一、"开放-封闭"原则(OCP)
Open-Closed Principle原则讲的是:一个软件实体应当对扩展开放,对修改关闭)
二、 里氏代换原则(LSP))
Liskov Substitution Principle(里氏代换原则):子类型(subtype)必须能够替换它们的基类型。)
三、 依赖倒置原则(DIP) )
依赖倒置(Dependence Inversion Principle)原则讲的是:要依赖于抽象,不要依赖于具体。)
抽象不应当依赖于细节;细节应当依赖于抽象;要针对接口编程,不针对实现编程。)
四、 接口隔离原则(ISP))
接口隔离原则(Interface Segregation Principle)讲的是:使用多个专门的接口比使用单一的总接口总要好。换而言之,从一个客户类的角度来讲:一个类对另外一个类的依赖性应当是建立在最小接口上的。)
实现方法:)
1、 使用委托分离接口)
2、 使用多重继承分离接口)
五、 合成/聚合复用原则(CARP))
合成/聚合复用原则(Composite/Aggregate Reuse Principle或CARP)经常又叫做合成复用原则(Composite Reuse Principle或CRP),就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新对象通过向这些对象的委派达到复用已有功能的目的。)
简而言之,要尽量使用合成/聚合,尽量不要使用继承。)
区分"Has-A"与"Is-A")
"Is-A"是严格的分类学意义上定义,意思是一个类是另一个类的"一种"。而"Has-A"则不同,它表示某一个角色具有某一项责任。)
六、 迪米特法则(LoD))
迪米特法则(Law of Demeter或简写LoD)又叫最少知识原则(Least Knowledge Principle或简写为LKP),也就是说,一个对象应当对其它对象有尽可能少的了解。 迪米特法则与设计模式)
Facade模式、Mediator模式)
创建型模式种类 )
• Singleton单例模式,保证一个类仅有一个实例)
• Factory Method工厂方法模式,定义一个创建对象的接口,并控制用哪一个类进行实例化 )
• Abstract Factory–抽象工厂模式,创建一系列相关或相互依赖的对象 )
• Prototype–原型模式,通过拷贝现有对象来生成新对象(克隆方法))
• Builder–生成器模式,将构造对象实例的代码逻辑移到类的外部)
结构型模式 )
• 结构型模式涉及到如何组合类或对象,以获得更大的结构)
• 结构型类模式采用继承机制来组合接口或实现)
• 结构型对象模式描述了如何对一些对象进行组合,从而实现新功能的一些方法 )
Adapter适配器模式,将一个类的接口转换成客户希望的另外一个接口,使得原本由于)
接口不兼容而不能一起工作的那些类可以一起工作适配器(Adapter)模式)
•桥梁(Bridge)模式,将抽象部分与它的实现部分分离,使它们都可以独立地变化)
• Composite组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性合成(Composite)模式 • Decorator 装饰模式,动态地给一个对象添加一些额外的职责装饰(Decorator)模式)
• Facade 外观模式,为子系统中的一组接口提供一个一致的界面,使得这一子系统更加容易使用 )
)
• Flyweight 享元模式,运用共享技术有效地支持大量细粒度的对象享元(Flyweight)模式 )
• Proxy代理模式,为其他对象提供一种代理以控制对这个对象的访问代理(Proxy)模式)
行为型模式 )
• 行为型模式涉及到算法和对象间职责的分配)
• 行为型模式不仅描述对象或类的模式,还描述它们之间的通信模式,将注意力转移到对象间的联系方式上来)
行为型模式种类)
• Chain of responsibility– 职责链模式,使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系职责链(Chain of Responsibility)模式 • Command– 命令模式,将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作 • Interpreter 解释器模式,给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子)
• Iterator迭代器模式,提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示)
• Mediator中介者模式,用一个中介对象来封装一系列的对象交互)
• Memento 备忘录模式,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态 • Observer观察者模式,定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新(事件))
• State状态模式,允许一个对象在其内部状态改变时改变它的行为)
• Strategy– 策略模式,定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换)
• TemplateMethod 模板方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中(使用继承,把公共的方法放到基类就属于模板))
• Visitor访问者模式,表示一个作用于某对象结构中的各元素的操作 )
文章评论
仅有1条评论
添加新评论
温馨提醒:如果您是第一次在本站留言,需要审核后才能显示哦!
写的不错哦。