网站建设数据库是什么意思,揭阳网站建设方案托管,wordpress建站心得,网站策划与建设阶段的推广方法经典的设计模式有23种#xff0c;但是常用的设计模式一般情况下不会到一半#xff0c;我们就针对一些常用的设计模式进行一些详细的讲解和分析#xff0c;方便大家更加容易理解和使用设计模式。
1-适配器模式原理 适配器模式的英文翻译是Adapter Design Pattern。顾名思义但是常用的设计模式一般情况下不会到一半我们就针对一些常用的设计模式进行一些详细的讲解和分析方便大家更加容易理解和使用设计模式。
1-适配器模式原理 适配器模式的英文翻译是Adapter Design Pattern。顾名思义这个模式就是用来做适配的它将不兼容的接口转换为可兼容的接口让原本由于接口不兼容而不能一起工作的类可以一起工作。适配器模式有两种实现方式类适配器和对象适配器。其中类适配器使用继承关系来实现对象适配器使用组合关系来实现。
2-适配器模式demo实现
// 类适配器: 基于继承
public interface ITarget {void f1();void f2();void fc();
}public class Adaptee {public void fa() { //... }public void fb() { //... }public void fc() { //... }
}public class Adaptor extends Adaptee implements ITarget {public void f1() {super.fa();}public void f2() {//...重新实现f2()...}// 这里fc()不需要实现直接继承自Adaptee这是跟对象适配器最大的不同点
}// 对象适配器基于组合
public interface ITarget {void f1();void f2();void fc();
}public class Adaptee {public void fa() { //... }public void fb() { //... }public void fc() { //... }
}public class Adaptor implements ITarget {private Adaptee adaptee;public Adaptor(Adaptee adaptee) {this.adaptee adaptee;}public void f1() {adaptee.fa(); //委托给Adaptee}public void f2() {//...重新实现f2()...}public void fc() {adaptee.fc();}
} 针对这两种实现方式在实际的开发中到底该如何选择使用哪一种呢判断的标准主要有两个一个是Adaptee接口的个数另一个是Adaptee和ITarget的契合程度。 1如果Adaptee接口并不多那两种实现方式都可以。 2如果Adaptee接口很多而且Adaptee和ITarget接口定义大部分都相同那我们推荐使用类适配器因为Adaptor复用父类Adaptee的接口比起对象适配器的实现方式Adaptor的代码量要少一些。 3如果Adaptee接口很多而且Adaptee和ITarget接口定义大部分都不相同那我们推荐使用对象适配器因为组合结构相对于继承更加灵活。
3-适用场景 一般来说适配器模式可以看作一种“补偿模式”用来补救设计上的缺陷。应用这种模式算是“无奈之举”。如果在设计初期我们就能协调规避接口不兼容的问题那这种模式就没有应用的机会了。一般会有以下几种场景会使用
1封装有缺陷的接口设计 2统一多个类的接口设计 3替换依赖的外部系统 4兼容老版本接口 5适配不同格式的数据
4-对比区别 代理、桥接、装饰器、适配器这4种模式是比较常用的结构型设计模式。它们的代码结构非常相似。笼统来说它们都可以称为Wrapper模式也就是通过Wrapper类二次封装原始类。
尽管代码结构相似但这4种设计模式的用意完全不同也就是说要解决的问题、应用场景不同这也是它们的主要区别。这里我就简单说一下它们之间的区别。
代理模式代理模式在不改变原始类接口的条件下为原始类定义一个代理类主要目的是控制访问而非加强功能这是它跟装饰器模式最大的不同。
桥接模式桥接模式的目的是将接口部分和实现部分分离从而让它们可以较为容易、也相对独立地加以改变。
装饰器模式装饰者模式在不改变原始类接口的情况下对原始类功能进行增强并且支持多个装饰器的嵌套使用。
适配器模式适配器模式是一种事后的补救策略。适配器提供跟原始类不同的接口而代理模式、装饰器模式提供的都是跟原始类相同的接口。