C#面向对象设计模式纵横谈(1):面向对象设计模式与原则

前两天从微软网站上将李建忠的设计模式webcasts下载下来了,听了一下,尽管刚开始觉得他说话有点KA,但他的讲座确实让我对面向对象有一个重新的认识!下面是我的一些总结,来自他讲座的PPT。

一、对象是什么

从三个层次上来理解:

1、从概念层面讲,对象是某种拥有责任的抽象(对象是一个拥有某种功能的东西)

2、从规格层面讲,对象是一系列可以被其它对象使用的公共接口(这个东西提供了使用它所拥有的功能的途径)

3、从语言实现层面来看,对象封装了代码与数据(行为与状态)

二、面向对象的设计原则

1、主要的三大原则

●针对接口编程,而不是针对实现编程(使程序在日后易于扩展)

客户端无需知道所使用对象的具体类型,只需要知道对象拥有客户端所期望的接口

●优先使用对象组合,而不是类继承

“继承”通常为“白箱复用”,“对象组合”通常为“黑箱复用”。类继承在某种程序上破坏了“封装性”,子类父类耦合度高;而对象组合则只需要被组合的对象拥有良好定义的接口,耦合度低

●封装变化点(将变化的与不变的进行分别封装,当变化的部分发生改变时,不变的部分不受影响)

使用封装来创建对象之间的分界层,设计者可以在分界层的一侧进行修改,而不会对另一侧产生影响,这样可以降低层次间的耦合度

2、其它更小的设计原则:

●单一职责原则(SRP)

一个类只能有一个可能引起它变化的原因(将其它与该类相关的可能会引起这个类发生变化的部分进行另外封装)

●开发封闭原则(OCP)(对程序进行扩展,而不是修改)

类模块应该是可扩展的,但是不可修改(对扩展开放,对修改封闭)

●Liskov替换原则(LSP)(接口与多态的使用)

子类必须可以替换它们的基类

●依赖倒置原则(DIP)(使用经常变化的逻辑不影响经常不发生变化的部分)

高层模块不应该依赖于低层模块,两者都应依赖于抽象

抽象不应该依赖于具体实现,具体实现应依赖于抽象

●接口隔离原则

不应该强迫客户程序依赖于它们不用的方法

讲  师:李建忠 上海祝成信息科技有限公司 高级培训讲师 MSDN特邀讲师 C#面向对象设计模式纵横谈(1):面向对象设计模式原则 C#面向对象设计模式纵横谈(2):Singleton 单件(创建型模式) C#面向对象设计模式纵横谈(3):Abstract Factory 抽象工厂模式(创建型模式) C#面向对象设计模式纵横谈(4):Builder 生成器模式(创建型模式) C#面向对象设计模式纵横谈(5):Factory Method 工厂方法模式(创建型模式) C#面向对象设计模式纵横谈(6):Prototype 原型模式(创建型模式) C#面向对象设计模式纵横谈(7):Adapter 适配器模式(结构型模式) C#面向对象设计模式纵横谈(8):Bridge 桥接模式(结构型模式) C#面向对象设计模式纵横谈(9):Composite 组合模式(结构型模式) C#面向对象设计模式纵横谈(10):Decorator 装饰模式(结构型模式) C#面向对象设计模式纵横谈(11):Facade 外观模式(结构型模式) C#面向对象设计模式纵横谈(12):Flyweight 享元模式(结构型模式) C#面向对象设计模式纵横谈(13):Proxy 代理模式(结构型模式) C#面向对象设计模式纵横谈(14):Chain of Responsibility 职责链模式(行为型模式) C#面向对象设计模式纵横谈(15):(行为型模式) Command 命令模式 C#面向对象设计模式纵横谈(16):(行为型模式) Interpreter 解释器模式 C#面向对象设计模式纵横谈(17):(行为型模式) Mediator 中介者模式 C#面向对象设计模式纵横谈(18):(行为型模式) Iterator 迭代器模式 C#面向对象设计模式纵横谈(19):(行为型模式) Observer 观察者模式 C#面向对象设计模式纵横谈(20):(行为型模式) Chain Of Responsibility 职责链模式 C#面向对象设计模式纵横谈(21):(行为型模式) Memento 备忘录模式 C#面向对象设计模式纵横谈(22):(行为型模式) State 状态模式 C#面向对象设计模式纵横谈(23):(行为型模式) Strategy 策略模式 C#面向对象设计模式纵横谈(24):(行为型模式) Visitor 访问者模式 C#面向对象设计模式纵横谈(25):设计模式总结
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值