适配器仿真潜在类型机制
来源:互联网 发布:手机望远镜偷窥软件 编辑:程序博客网 时间:2024/05/16 09:39
适配器模式分两种:类适配器和对象适配,学过这种设计模式了清楚,它可以让一个类的接口转换成客户所期待的接口,从我们拥有的接口中编写代码来产生我们需要的接口,可以是代码更泛化,从而就接近与其潜在类型机制了。
代码例子:
泛型类型参数类代码:
//公共父类public class Coffee { private static long counter = 0; //标记每个子类的标识值 private final long id = counter++; public String toString() { return getClass().getSimpleName() + " " + id; }} public class Latte extends Coffee {}public class Mocha extends Coffee {}
目标接口:
interface Addable<T> { void add(T t); }
源角色:
public class SimpleQueue<T> implements Iterable<T> { private LinkedList<T> storage = new LinkedList<T>(); public void add(T t) { storage.offer(t); } public T get() { return storage.poll(); } public Iterator<T> iterator() { return storage.iterator(); }}
适配器:
//对象适配器,把任何Collection类都适配为Addable接口public class AddableCollectionAdapter<T> implements Addable<T> {//源角色 private Collection<T> c; public AddableCollectionAdapter(Collection<T> c) { this.c = c; } public void add(T item) { c.add(item); }}//类适配器,把SimpleQueue类适配为Addable接口public class AddableSimpleQueue<T> extends SimpleQueue<T> implements Addable<T> { public void add(T item) { super.add(item); }}
代码测试:
class Adapter { public static <T> Addable<T> collectionAdapter(Collection<T> c) { //这里利用了捕获转换,有利于捕获其泛型类型参数 return new AddableCollectionAdapter<T>(c); }}public class Fill2Test { public static void main(String[] args) { // 创建一个容器类源角色 List<Coffee> carrier = new ArrayList<Coffee>(); Fill2.fill( new AddableCollectionAdapter<Coffee>(carrier), Coffee.class, 3); Fill2.fill(Adapter.collectionAdapter(carrier), Latte.class, 2); for(Coffee c: carrier) System.out.println(c); System.out.println("----------------------"); // 创建一个适配器 AddableSimpleQueue<Coffee> coffeeQueue = new AddableSimpleQueue<Coffee>(); Fill2.fill(coffeeQueue, Mocha.class, 4); Fill2.fill(coffeeQueue, Latte.class, 1); for(Coffee c: coffeeQueue) System.out.println(c); }}
运行结果:
Coffee 0
Coffee 1
Coffee 2
Latte 3
Latte 4
Mocha 5
Mocha 6
Mocha 7
Mocha 8
Latte 9
1 0
- 适配器仿真潜在类型机制
- 潜在类型机制
- 用反射实现潜在类型机制
- JAVA泛型的潜在类型机制
- 《Java编程思想》潜在类型机制
- java潜在类型机制的具体实现
- java 对缺乏潜在类型机制的补偿 :反射
- 15.17 对缺乏潜在类型机制的补偿
- 一个潜在类型溢出
- 物理仿真行为类型
- 自定义GSON类型适配器
- listview 适配器多类型
- 充电器适配器类型
- ListView适配器及缓存机制
- ListView适配器及缓存机制
- 设计模式---结构类型---适配器
- 方法名() throws 所有潜在异常类型列表
- 编程中使用无符号类型潜在的问题
- [BZOJ 2732][HNOI 2012]射箭(半平面交)
- 《C语言及程序设计》实践参考——另类求和
- Android—什么是ANR 如何避免它?
- 堆排序
- PCB设计笔记--1
- 适配器仿真潜在类型机制
- 1182 统计单词
- Linux--写一个简单的模块
- 永远做一个有计划的人
- drawnow aviread
- C 将一个10进制数2进制编码中的1的个数输出(利用数组)
- ADO.NET入门教程(五) 细说数据库连接池
- php字符串截取函数
- memcpy和strcpy的区别