设计模式~第一篇我理解的设计模式~~(^_^)

1:每一个模式描述了一个在我们周围不断重复发生的问题
以及问题的解决方案

2:设计模式描述了软件设计过程中某一类常见问题的一般性的解决方案
3:面向对象的设计模式描述了面向对象设计过程中特定场景下
类与类相互通信的对象之间常见的组织关系

--------------设计模式:可服用面向对象软件的基础
封装--隐藏内部实现
继承0服用代码
多态~~改写对象行为
---------------上面这三点没有刻画面向对象的机制~~~的核心
-------例子
场景:
  设计一个人事管理系统,其中一个功能是对各种不同类型的员工,计算其当月工资-不同类型的员工,拥有不同的薪金

结构优化算法
1 获得人事系统中所有可能的员工类型
2 根据不同的员工类型所对应的不同的薪金制度,计算工资
结构化做法
enum EmployeeType
{
 Engineer;
 Sales;
}

//计算工资程序

- 听到~~时间概念对软件的重要性~~
if(type==EmployeeType.Engineer)
..
else
...

面向对象的设计
1 根据不同的员工类型设计不同类,并且
使这些类继承自一个抽象的Employee抽象类
其中有一个抽象方法GetSalary.
2在各个不同的员工类中,根据自己的薪金制度,重写(override)GetSalary方法
abstract class Employee
{
  public abstract int GetSalary();
}
class Sales:Employee
{
 public override intGetSalary()
{}
}
使用--将抽象类的子类赋给抽象父类,emFactory是Emeloyee工厂类,GetEmployee返回的事Emeloyee
//根据id选择类型
Emeloyee e=emFactory.GetEmployee(id);
e.GetSalary();
----面相对象不是杜绝改变,而是降低改变
对象是什么
1:从概念层面讲,对象是某种拥有责任的抽象
2:从规格层面讲,对象是一系列可以被其他对象是用的公共接口
3:从语言实现层面来看,对象封装了代码和数据
-----------------
1针对接口编程,而不是针对实现编程
-客户无须知道所使用对象的特定类型,只需要知道对象有客户所期望的接口
2优先使用对象组合,而不是类继
承继承通常为"白箱复用",对象组合称为黑箱复用,继承在某种程度上
破坏了类的封装性,子类父类耦合度高,对象组合只要求被组合的对象有良好的接口,耦合低
3封装变化点
使用封装来创建对象之间的分界层,让设计者可以在分界层的一端修改而不影响另一端
4使用重构得到设计模式-这点很重要不断重构得到更好的
---具体原则
1单一职责:1个类只有一个引起变化的原因
2开发封闭原则
-模块是可扩展的,但是不可修改(对扩展开发,对修改封闭)
3替换原则--子类可以替换他们的基类
4依赖倒置原则
--高层不应该依赖于底层模块,二者都应该依赖于抽象
--抽象不应该依赖于实现细节,实现细节依赖于抽象
--接口隔离原则-不应强迫客户依赖于它,们
不用的接口


 

posted @ 2007-05-20 10:17  苹果王子  阅读(436)  评论(2编辑  收藏  举报