设计模式学习笔记
zhouleijian317
这个作者很懒,什么都没留下…
展开
-
简单工厂模式
需要什么产品,经过工厂,产生什么产品(例如:需要什么类的实例,根据工厂去实例出来)原创 2011-05-26 20:48:00 · 336 阅读 · 0 评论 -
策略模式
<br />封装相关算法(类的功能实现),让它们在策略模式类中进行处理,使得算法(类的功能实现)的变化,不会影响到使用算法的客户。<br />例如:利用简单工厂去实例化出对应类需要赋值给另一个类,但是通过策略模式后,将工厂和类的处理全包含在策略类中处理,客户端只需要实例策略类就可以,不需要去认识工厂和实例的类原创 2011-06-01 21:11:00 · 306 阅读 · 0 评论 -
1、单一职责原则(SRP),2、开放-封闭原则(OCP)
1、单一职责原则(SRP):如果你能够想到多于一个动机去改变这个类,那么这个类就具有多于一个职责,就应该考虑类的职责分离。2、开放-封闭原则(OCP):尽量不要去修改类,而是去建立新类去扩展它的方法 开放-封闭原则是面向对象设计的核心所在。遵循这个原则可以带来面向对象技术所声称的巨大好处,也就是可维护、可扩展、灵活性好。开发人员应该公对程序中呈现出频繁变化的那些部分做出抽象,然而,原创 2011-06-13 21:14:00 · 535 阅读 · 0 评论 -
1、依赖倒转原则,2、里氏代换原则(LSP)
1、依赖倒转原则:(1)、高层模块不应该依赖低层模块。两个都应该依赖抽象 解释:比如DAL层老需要调用UI层的公用方法,导致替换DAL时问题一堆(2)、抽象不应该依赖细节。细节应该依赖抽象 解释:DAL不应该直接于UI层直连,应该建立IDAL中间处理层,以免更换数据库导致问题,到时只需要替换掉DAL就行LADI和UI不变 2、里氏代换原原创 2011-06-15 20:36:00 · 424 阅读 · 0 评论 -
装饰模式(Decorator)
装饰模式(Decorator):可以将方法附加到另一个对象当中也就是给另一个对象附加了一个功能,最后统一执行。实例代码: class Program { static void Main(string[] args) { conPerson c = new conPerson(); re原创 2011-06-17 20:07:00 · 330 阅读 · 0 评论 -
代理模式(Proxy)
代理模式(Proxy):理解:1、为其他对象提供一种代理以控制对这个对象的访问。2、同样继续统一接口,但是代理类实现的接口方法里调用实际类中的方法3、在访问对象时引入一定程度的间接性 实际应用:1、远程代理 比如代理QQ登录服务器2、虚拟代理打开HTML时的图片加载3、安全代理4、智能指引原创 2011-06-17 20:24:00 · 366 阅读 · 0 评论 -
工厂方法(Factory Method)
工厂方法(Factory Method)1、定义一个用于创建对象的接口,让子类决定实例化哪一个类。2、每一个类对应一个工厂(抽象), 具体实例化类时不实例化指定功能类,而是一个工厂类(创建功能类的接口)LogFactory factory = new EventFactory();(将这个单独存放起来,如果功能类变了,只需要改这个地方)原创 2011-06-20 20:53:00 · 270 阅读 · 0 评论 -
原型模式(Prototype)
原型模式(Prototype)1、用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象2、克隆实例:Dataset中的Colne是浅复制,Copy是深复制Colne如果字段是值类型,则对该字段执行整体复制,如果字段是引用类型,则复制期引用,不复制对象。可以将浅复制变换成深复制,只需要在浅复制中的创建对象时同样变成复制原创 2011-06-20 21:24:00 · 293 阅读 · 0 评论 -
模版方法、迪米特法则、外观模式(门面模式)
模版方法1、定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可自定义该算法的某些特定步骤2、就是把通用功能放到主类,继续它的去实现变化的东西让主类调用,因为实例化时只需要实例出子类,那么主类的方法就变成子类的了 迪米特法则1、如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的原创 2011-06-21 20:32:00 · 589 阅读 · 0 评论