使用抽象类扩展
2015-10-03 00:12
309 查看
这个模式是在lib中经常用到的,特别实在设计库函数的时候,经常会用到的装饰模式
所谓装饰模式就是把核心部分交给其他人处理,我只负责你具体要给我一个什么样的值即可
例如让我们设计一个
具体看代码,不多说
这个是核心
所谓装饰模式就是把核心部分交给其他人处理,我只负责你具体要给我一个什么样的值即可
例如让我们设计一个
具体看代码,不多说
package common; import java.util.List; import java.util.function.Consumer; public abstract class BaseMap<T> { // ? extends T 表示下界 // ? super T 表示上界 private List<? extends T> list; public BaseMap(List<? extends T> list) { super(); this.list = list; } public abstract <A extends T> Object procecss(A obj); /*** * 注意: forEach(Consumer<? super T> action) */ public void printAll() { this.list.forEach(new Consumer<T>() { @Override public void accept(T t) { System.out.println(BaseMap.this.procecss(t)); } }); } }
这个是核心
package common; import java.util.List; public class UpperMap<T> extends BaseMap<T> { public UpperMap(List<? extends T> list) { super(list); // TODO Auto-generated constructor stub } @Override public <A extends T> Object procecss(A obj) { // TODO Auto-generated method stub return obj.toString().toUpperCase(); } }
package common; import java.util.ArrayList; import java.util.List; public class Demo { /*** * 使用装饰模式开发 * * @param args */ public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("scala"); list.add("java"); list.add("php"); BaseMap<String> up = new UpperMap<String>(list); up.printAll(); } }
相关文章推荐
- 软件实习笔记三(Qt5.5连接MySQL5.6)
- 2015-09-22CSS:border、background、表格、超链接、overflow、firebug
- JSON的学习与使用
- 转载:OC中的代码块block
- android-----gen下没有R文件
- 使用HTTP协议访问网络
- 二分小结
- 华为oj_输出单向链表中倒数第k个结点
- OC中的正则表达式的使用
- 《TCP/IP详解 卷一:协议》读书笔记--IP:网际协议
- .ply模型格式解析与Loader编写
- Structure From Motion 笔记
- n阶行列式求解
- Picasso分析03
- Cocos2dx-3.8.1 Mac模拟器打印行数太多显示不全
- Best Time to Buy and Sell Stock IV[未完成】
- linux下查看对象文件依赖的动态库的工具ldd简介
- CF478 B. Random Teams 组合数学 简单题
- windows下对拍
- Anonymous Class