码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-12-07 16:10:40      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:code   ret   interface   imp   不同   str   学生   www   依赖   

适配器模式

日常生活中的标准电压为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

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

标签:code   ret   interface   imp   不同   str   学生   www   依赖   

原文地址:https://www.cnblogs.com/minhui/p/12001908.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!