设计模式与代码的结构特性

Posted minhui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式与代码的结构特性相关的知识,希望对你有一定的参考价值。

适配器模式

日常生活中的标准电压为220V,而我们所使用的电器的电压确实各种各样的,因此,当为它们充电时就需要使用相应地充电器在和标准电压和电器电压之间进行转换,这里充电器的作用就相当于一个适配器。
而在编程设计中,适配器模式是将一个类的接口转换成客户期望的接口。接下来以具体的实例对适配器进行介绍。


分类

  1. 对象适配器
    通过对象组合的方式来进行处理的,而不是通过继承的方式,组合相比继承是更推荐的方式。

  2. 类适配器
    通过类继承的方式来实现,和对象适配器相比类适配器的依赖性更大,并且随着继承膨胀变得难以控制,灵活性得不到保障。

实例

教师的工作是教书(teach()),学生的工作是学习(study()),程序员的工作是编程(program()),不同的行业有不同的工作形式,现在希望编写一个程序输出表示不同行业的工作形式。

1. 不使用适配器模式

//教师行业接口
public interface ITeacher {
    String teach();
}
//教师行业实现
public class Teacher implements ITeacher{
    public String teach() {
        return "教书";
    }
}
//程序员行业接口
public interface IProgrammer {
    String program();
}
//程序员行业实现
public class Student implements IProgrammer{
    public String program() {
        return "编程";
    }
}

2. 定义适配器模式

//统一的接口
public interface IWorker {
    //worker的类型以Object代替,以适配各种类型
    String work(Object worker);
    boolean Support(Object worker);
}
//教师的适配器
public class Teacher implements IWorker{
    public String work(Object obj){
        return ((ITeacher)obj).teach();
        }
    public boolean Support(Object worker){
        return worker instanceof ITeacher;
        }    
}
//程序员的适配器
public class Programmer implements IWorker{
    public String work(Object obj){
        return ((IProgrammer)obj).program();
        }
    public boolean Support(Object worker){
        return worker instanceof IProgrammer;
        }    
}

参考: https://www.cnblogs.com/yuxiang1/p/11058678.html

以上是关于设计模式与代码的结构特性的主要内容,如果未能解决你的问题,请参考以下文章

案例分析:设计模式与代码的结构特性

案例分析:设计模式与代码的结构特性

案例分析:设计模式与代码的结构特性

案例分析:设计模式与代码的结构特性

设计模式与代码的结构特性

案例分析:设计模式与代码的结构特性