• 设计模式之适配器模式


      适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。

      这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。

      我们接下来以一个类要实现List接口中的contains(Object o)为例,虽然只需要这一个方法,但是在实现List接口时,系统告知需要覆写该接口的所有方法,也是代码看起来很臃肿,而且有些不得不覆写的方法还是自己不需要的,该怎么办呢?  

    package 适配器模式;
    import java.util.Collection;
    import java.util.Iterator;
    import java.util.List;
    import java.util.ListIterator;
    /**
     * 适配器模式
     * 方法太多,有很多方法是自己不需要的,显得很凌乱,肿么办?
     */
    public abstract class ListAdapter implements List{
    
    	@Override
    	public int size() {
    		return 0;
    	}
    
    	@Override
    	public boolean isEmpty() {
    		return false;
    	}
    
    	@Override
    	public boolean contains(Object o) {
    		return false;
    	}
    
    	@Override
    	public Iterator iterator() {
    		return null;
    	}
    
    	@Override
    	public Object[] toArray() {
    		return null;
    	}
    
    	@Override
    	public Object[] toArray(Object[] a) {
    		return null;
    	}
    
    	@Override
    	public boolean add(Object e) {
    		return false;
    	}
    
    	@Override
    	public boolean remove(Object o) {
    		return false;
    	}
    
    	@Override
    	public boolean containsAll(Collection c) {
    		return false;
    	}
    
    	@Override
    	public boolean addAll(Collection c) {
    		return false;
    	}
    
    	@Override
    	public boolean addAll(int index, Collection c) {
    		return false;
    	}
    
    	@Override
    	public boolean removeAll(Collection c) {
    		return false;
    	}
    
    	@Override
    	public boolean retainAll(Collection c) {
    		return false;
    	}
    
    	@Override
    	public void clear() {
    		
    	}
    
    	@Override
    	public Object get(int index) {
    		return null;
    	}
    
    	@Override
    	public Object set(int index, Object element) {
    		return null;
    	}
    
    	@Override
    	public void add(int index, Object element) {
    	}
    
    	@Override
    	public Object remove(int index) {
    		return null;
    	}
    
    	@Override
    	public int indexOf(Object o) {
    		return 0;
    	}
    
    	@Override
    	public int lastIndexOf(Object o) {
    		return 0;
    	}
    
    	@Override
    	public ListIterator listIterator() {
    		return null;
    	}
    
    	@Override
    	public ListIterator listIterator(int index) {
    		return null;
    	}
    
    	@Override
    	public List subList(int fromIndex, int toIndex) {
    		return null;
    	}
    }
    ------------------------------------------------------
    package 适配器模式;
    /**
     * 根据需要覆写需要的方法
     */
    public class Test extends ListAdapter{
    	@Override
    	public boolean contains(Object o) {
    		return false;
    	}
    } 
  • 相关阅读:
    Caffe2(1)----Ubantu14.04安装
    ROS知识(16)----如何编译时自动链接同一个工作空间的其他包的头文件(包含message,srv,action自动生成的头文件)
    GIT(4)----免输入账号和密码方法
    faceNet编译问题
    Python知识(7)--最小二乘求解
    BeanShell用法汇总(部分摘抄至网络)
    web_custom_request和web_submit_data
    创建一个数组,然后随机输出一个数组的值
    lr常见问题
    通过ctrl+r快速启动程序
  • 原文地址:https://www.cnblogs.com/lizhangyong/p/8729516.html
Copyright © 2020-2023  润新知