23设计模式
设计模式定义:设计模式是从许多优秀的软件系统中总结出成功的可复用的设计方案
面向对象的几个基本原则:
1.面向抽象原则 -使用抽象类和接口 eg:计算柱体的面积
2.开-闭原则 ? ?-开是可扩展 闭-是不修改的部分 同样上面的例子
3.多用组合少用继承 ?- 子类从父类继承的方法在编译时就确定下来了,所以无法在运行期间改变从父类继承的方法的行为。
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?子类和父类的关系是强耦合关系,也就是说当父类的方法的行为更改时,必然导致子类发生变化。
4.高内聚 -低耦合原则
?
23种设计模式的理解:
?1.工厂方法模式:用户需要一个类的子类的实例,但不希望与该类的子类形成耦合;用户需要一个类的子类的实例,但用户不 ? ? ? 知道该类有那些子类可用。
?? ?结构描述:抽象产品,具体产品,抽象构造者,具体构造者
?? ?eg:药店生成药品
?2.抽象工厂模式:系统需要为用户提供多个对象,但不希望用户直接使用new 运算符实例化这些对象,即希望用户和创建对象 ? ? 的类脱耦。系统需要为用户提供多个相关的对象,以便用户联合例用他们,但又不希望用户来决定这些对象是如何关联的。
?? ?系统需要为用户提供一系列对象,但只需要用户知道这些对象有那些方法可用,不需要用户知道这些对象的创建的过程。
?? ?eg: 衣服配套
?3.装饰模式:程序希望动态地增强类的某个对象的功能,而又不影响到该类的其它对象。采用继承来增强对象功能不利于系 ? ?统的扩展和维护。
?? 结构描述:抽象组件,具体组件,装饰,具体装饰
??eg:鸟飞
4.观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖它的对象都得到通知并被自 ? 动更新。
??结构描述:主题 ,具体主题 ,观察者,具体观察者
??eg:求职
5.策略模式:定义一系列算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而 ? ?变化。
??结构描述:策略,具体策略,上下文
?eg:士兵排队算法
6.适配器模式:使得原本由于接口不兼容而不能一起工作的那些类可以一起工作.
??结构描述:目标,被适配者,适配器
??eg:两相,三相插头的适配
7.代理模式:为其它对象提供一种代理以控制对这个对象的访问.
?? 代理模式可以屏蔽用户真正请求的对象,使用户程序和真正的对象这间解耦
?? 使用代理来担当那些创建耗时的对象的替身
?? 结构描述:抽象主题 ,实际主题,代理?
?? eg:代理验证3角形
8.外观模式:
??为系统中的一组接口提供一个一致的界面。该模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
??结构描述:子系统,外观
?eg:邮寄包裹流程
?