`

Deafult Adapter的学习

阅读更多

一、概述

当不需要全部实现适配器接口提供的方法时,可先设计一个抽象类实现适配器接口,并为接口中每个方法提供一个默认实现(空方法)。那么该抽象类的子类可有选择地覆盖父类的某些方法来实现需求。

二、结构

defaultadapter.png

 

三、动机

对于一个接口不想使用其所有的方法时。


我觉得把Default Adapter模式Adapter模式割裂开来,不会影响对Default Adapter模式的理解。
Default Adapter模式就是为目标接口提供一个平庸实现层,真正的实现类从此平庸实现层继承,Override其中对自己有意义的方法,而其他方法保持其平庸状态。
为Target接口所需的方法统统提供一套缺省实现,通常的做法是,除非你特别要求,否则我什么都不做。
如果实现类比较多而且需要实现的方法很多、真正做事儿的方法很少,那么Default Adapter模式会为系统省下不少重复代码。


缺省适配器模式:为一个接口提供缺省实现,这样子类型可以从这个缺省实现进行扩展,而不必从原有接口进行扩展。
“平庸化”的适配器模式。


简单实现一下:
接口:

package com_pattern_deafultadapter;

/** *//**
 * 接口(提供一些要使用的方法)
 * 
@author zdw
 *
 
*/

public interface AbstraceService
{
    
public void method1();

    
public void method2();

    
public void mehtod3();
}


缺省适配器类:

package com_pattern_deafultadapter;

/** *//*******************************************************************************
 * 缺省适配器类
 * 
 * 
@author zdw
 * 
 
*/

public class ServiceAdaper implements AbstraceService
{
    
public void method1()
    
{
    }


    
public void method2()
    
{
    }


    
public void mehtod3()
    
{
    }

}


具体类:

package com_pattern_deafultadapter;

/** *//*******************************************************************************
 * 真正要使用方法的类
 * 
 * 
@author zdw
 * 
 
*/

public class ConcreateService extends ServiceAdaper
{
    
// 重写自己需要的方法
    @Override
    
public void method1()
    
{
    }

}


々上善若水々 2008-05-24 08:35 发表评论
分享到:
评论

相关推荐

    有关switch语句的案例

    该案例是我在java教材上抄的,用于演示switch语句的用法,其介绍了switch语句的基本用法,常用于选择...如果输入的值不在各种情况(case)中就会被归纳进deafult;报错,以上是我的浅见,不足不对之处望各位指正,谢谢。

    bsg.rar_it

    sg.h sg_io_hdr also has bits defined for it s flags member. These two flag values (0x10 and 0x20) have the same meaning in sg.h ... For bsg the BSG_FLAG_Q_AT_HEAD flag is ignored since it is the deafult.

    jquery监控数据是否变化(修正版)

    代码如下: ///”query-1.5.1.min.js”> (function($) { /... $.fn.MonitorDataChange = function(options) { var deafult = { arrTags: tagName, //需监控控件的tagName属性 arrCtrls: ctrlIds //不监控的控件ID }; var

    QuericsSearch-crx插件

    查询探索是搜索管理器扩展,它将Deafult搜索配置为音频搜索。 通过安装,您同意将搜索引擎更改为音乐查询。 您可以按照添加/删除扩展的说明随时更改此选项。 通过键入查询术语来查找在线查找时,可以自动选择最适合...

    idea-全局默认maven配置

    在项目实战中我们依赖的开发IDE可谓是我们的饭碗,怎么高效优化使用IDE将极大提高我们开发的效率,这里通过一些...因此为了简便操作 ,完全可以按照以下流程进行设置‘Deafult Settings’,配置完之后下次打开新的projec

    GulpExample:了解如何使用gulp

    gulp.task( ' deafult ' , [ ' task name ' , ' task name ' ]) ; 串接任务: gulp.pipe(function) //example code - 讀取檔案並寫入到新位置 gulp.src( ' project/style/index.css ' ) .pipe(gulp.dest( ' project/...

    图像直方图均衡化算法matlab代码-histmatch:组匹配

    图像直方图均衡化算法matlab代码...(deafult is 64 to match MATLAB) out = hist . histeq_exact ( im ) # applies exact histogram equalization using 256 bins (default) with VA method out = hist . histeq_exac

    matlab全景图拼接代码-NISwGSP_Ubuntu:在原有框架的基础上,做了一些修改,增加了一些模块

    matlab全景图代码具有全局相似性先验的自然图像拼接 感谢原作者的贡献。 基于原作者的存储库,我修复了一些错误并添加...DEAFULT BUILD-TYPE 是“调试” 用法 下载代码并编译。 你需要Eigen 、 VLFeat 、 OpenCV 3.0.0

    task_1:叉yandex-shri-2018entrance-task-1-2

    任务1-发现错误 该存储库包含(2018年秋季,莫斯科,圣彼得堡,辛菲罗波尔)的测试任务“发现错误”的材料。... 解决方案是将函数名称括在大括号中,或者在导入的模块中添加deafult关键字。 我选择第一个

    gulp-bootstrap-sass-template:由 gulp、bootstrap、sass、fontawesome 组成的自定义模板。

    gulp-bootstrap-sass-模板 由 gulp、bootstrap、sass、fontawesome 和 LiveReload 组成的自定义模板 安装 克隆这个 repo。 cd 进入目录并运行npm ... 通过键入执行LiveReload gulp ,它在端口4000上运行的deafult。

    SoundBox:支持HTML5音频库和可选的基于Flash的后备广告

    音箱具有回退到FlashHTML5音频库选项SoundBox.defaults.flashOnly = true/false, deafult = falseSoundBox.defaults.flashUrl = "flash audio player url for fallback", default = "./assets/dist/swf/player.swf...

Global site tag (gtag.js) - Google Analytics