当前位置: 首页 > news >正文

插座java适配器模式_Java开发网 - 适配器模式的理解 (我自己写的)

Posted by:richardluo

Posted on:2003-01-20 16:02

适配器模式的理解

public class window的软件

{

public void run(){

System.out.print("我运行在window上");

}

}

public class linux的软件

{

public void run1(){

System.out.print("我运行在linux上");

}

}

public class 适配器 extends window的软件

{

private linux的软件 软件1; //实际上是聚合的使用

public 适配器(linux的软件 软件变量)

{

this.软件1= 软件变量;

}

public void run()

{

软件1.run1();

}

}

客户段

public class test{

public static void main(String args[])

{

linux的软件 test1=new linux的软件();

适配器 test2=new 适配器(test1);

test2.run();

test2.run1();

}

Adapter 有所谓类形式的Adapter模式和实例类型的Adapter模式

所谓类形式的Adapter模式

public interface Target{

public void method1();

public void method2();

}

public class Adaptee{

public void method1(){

}

}

public class Adapter extends Adatpee implements Target

{

public void method2(){

}

}

理论上实现一个接口,就要实现接口所有的方法,可是Adapter没有实现method1,仔细一看是extends Adatpee,从Adatpee自动继承method1方法,哈哈,这就是GUI一写到实现listener接口的时候要实现一大堆方法,而extends ***Adapter 只要重写几个方法即可

所谓实例形式的Adapter模式

public interface Target{

public void method1();

public void method2();

}

public class Adaptee{

public void method1(){

}

}

public class Adapter implements Target

{

private Adaptee adaptee;

public Adapter(Adaptee adaptee){

this.adaptee=adaptee;

}

public void method2(){

}

public void method1(){

}

}

实际上是把Adaptee传入来创造一个新对象Adapter,而整个这个Adapter类具备了Target的特征,而adaptee具有Adaptee的特征

比如说两个齿的插头需要插到三个口的插座里去,怎么办,找一个两头转三头的转换器,把两个头的插进去,整体就变成了一个三齿的插头,这里,插座它不是Target,三个齿的插头才是Target

而类形式的Adapter模式就是在两个齿的基础之上改造,让它多一个按纽,按一下是三个齿,再按一下是两个齿的。

相关文章:

  • java中borderpane_JavaFX BorderPane布局
  • Java如何查行数_如何正确利用Rownum来限制查询所返回的行数?
  • java 3 4_3-4 Java基础第四天
  • php phar 文件使用,PHP如何操作phar文件
  • java使用xpath解析xml,java使用XPath解析xml
  • php脚本防护,PHP的一个EVAL的利用防范
  • php中背景图怎么设置不重复,css怎么让背景图片不重复
  • java标签更改显示,离子选项卡,如何在标签更改上显示微调器?
  • java读写二进制文件 移动指针 seek,《Java大学教程》—第20章 文件处理
  • php权限无需验证的控制器,控制器 · ThinkPHP5权限管理 · 看云
  • 两'参数粒子群matlab,SVM用粒子群优化参数
  • 数据在文本框中显示 php,在文本框中使用php和纯ajax从数据库加载数据
  • 数字信号处理matlab滤波器,数字信号处理matlab滤波器课程设计
  • matlab逆求贝塞尔函数变量值,MATLAB怎么求解有贝塞尔函数的问题,求高手帮帮忙,谢谢...
  • java 继承 默认作用域,Spring(三)——Bean的 继承关系、依赖关系、作用域
  • 【Leetcode】101. 对称二叉树
  • Angular 响应式表单 基础例子
  • docker-consul
  • Java比较器对数组,集合排序
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • oschina
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Python打包系统简单入门
  • rabbitmq延迟消息示例
  • VUE es6技巧写法(持续更新中~~~)
  • Vue.js源码(2):初探List Rendering
  • webpack+react项目初体验——记录我的webpack环境配置
  • 第十八天-企业应用架构模式-基本模式
  • 给Prometheus造假数据的方法
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • (LeetCode 49)Anagrams
  • (待修改)PyG安装步骤
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (一)VirtualBox安装增强功能
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • ./和../以及/和~之间的区别
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .skip() 和 .only() 的使用
  • @Bean, @Component, @Configuration简析
  • @TableId注解详细介绍 mybaits 实体类主键注解
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • [51nod1610]路径计数
  • [ABC294Ex] K-Coloring
  • [CSS]浮动
  • [DM复习]关联规则挖掘(下)
  • [IE9] 解决了傲游、搜狗浏览器在IE9下网页截图的问题
  • [Linux]----文件操作(复习C语言+文件描述符)
  • [MTK]安卓8 ADB执行ota升级
  • [Oh My C++ Diary]善用三目运算符(a?b:c)
  • [P4V]Perforce(P4V)使用教程
  • [pdf]《软件方法》强化自测题业务建模需求分析共191页,230题
  • [raspberry pi3] zram设置