设计模式的学习
- 设计模式是前辈们对代码开发经验的总结,是解决问题的一系列套路,它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案
创建型模式:
单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式
结构型模式:
适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式
行为型模式:
模板方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式
面向对象的七大原则:
- 开闭原则: 对扩展开发,对修改关闭
- 里氏替换原则: 继承必须确保超类所拥有的性质在子类中仍然成立
- 依赖倒置原则: 要面向接口编程,不要面向实现编程
- 单一职责原则: 控制类的粒度大小、将对象解耦、提高其内聚性
- 接口隔离原则: 要为各个类建立他们需要的专用接口
- 迪米特法则: 只与你的直接朋友交谈,不跟“陌生人”说话
- 合成复用原则:尽量先使用组合或者聚合等关联关系来实现,其次才考虑继承关系来实现
结构型设计模式——适配器模式
结构型模式作用:从程序的结构上实现松耦合,从而可以扩大整体的类结构,用来解决更大的问题
适配器模式:
将一个类的接口转换成为客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作
角色分析:
**目标接口:**客户所期待的接口,目标可以是具体的或抽象的类,也可以是接口
需要适配的类:需要适配的类或适配者类
适配器:通过包装一个需要适配的对象,把原接口转换成目标对象
联想生活当中就有适配器的影子,现在的笔记本电脑大部分的轻薄本都没有直接插网线的入口,只有usb的接口,呢插入网线肯定需要一个转换器来实现,这就体现了
适配器的设计模式,转换器通过适配网线跟电脑的usb接口达到电脑上网的作用,它在网线接口和电脑的usb接口起到了中间桥梁的作用。
话不多说上代码
网线类
转换器接口:
转换器实现类
具体实现转换器连接网线上网的方法
电脑类:
实现上网
这是一种类适配器的适配器模式实现,转换器去继承网线类,对于这一种来说,它的局限性也很明显就是单一继承,不利于扩展。
第二种是通过组合的方式,也是比较常用的对象适配器的方式,对比一下学习
适配器的实现方法类
电脑类
这个电脑类的实现适配器可以直接连接电脑与网线,实现电脑上网
对比发现第二种更实用一些
模板
适配器:
对象适配器的优点:
- 一个对象适配器可以把多个不同的适配器适配到同一个目标
- 可以适配一个适配者的子类,由于适配器和适配者之间是关联关系,根据 “里氏代换原则” ,适配者的子类也可通过该适配器进行适配
类适配器缺点:
- 对于Java、C#等不支持多重类继承的语言,一次最多只能适配一个适配者类,不能同时适配多个适配者
- 在Java、C#等语言中,类适配器模式中的目标抽象类只能为接口,不能为类,其使用有一定的局限性。
适用场景: - 系统需要使用一些现有的类,而这些类的接口不符合系统的需要,甚至没有这些类的源代码
- 想创建一个可以重复使用的类,用于与一些彼此之间没有太多关联的一些类,包括一些可能在将来引进的类一起工作
以上 就是我的分享,大家可以多多交流,共同进步!!



