Adapter 模式的小例子以及分析
2014-01-04 23:34
323 查看
Adapter 模式的小例子以及分析
[java] viewplaincopyprint?
package com.eric.interfaceAndInnerClass;
/**
* Apply 类主要处理Process类型的方法,在下面的UperStringProcess,LowerStringProcess
* 由于实现了Process的借口所以理所当然的会被Apply的处理
* NumberOperator借口的子类由于并没有显示process借口,所以其子类是不能被Apply方法所调用,而通常情况下类似于NumberOperator这样的类往往是库函数定义好的,我们也不能去更改,
* 这个时候如果想让其被Apply类处理的话,Adapter模式就发挥其作用了,具体请康NumberAdapter类
*
* */
public class AdapterPartner {
public static void main(String[] args) {
String str = "I Come From Chinses";
Process uperStr = new UperStringProcess();
Process lowStr = new LowerStringProcess();
Apply.Process(uperStr, str);
Apply.Process(lowStr, str);
NumberOperator noAdd = new AddNumber();
NumberOperator noSub = new SubNumber();
NumberAdapter naAdd = new NumberAdapter(noAdd);
NumberAdapter naSub = new NumberAdapter(noSub);
Apply.Process(naAdd, "numer add:");
Apply.Process(naSub, "numer sub:");
}
}
interface Process {
String name();
void process(Object obj);
}
class Apply {
static void Process(Process process, Object obj) {
System.out.println("Class name is:" + process.name());
process.process(obj);
}
}
abstract class StringProcess implements Process {
public String name() {
return this.getClass().getName();
}
public abstract void process(Object obj);
}
class UperStringProcess extends StringProcess {
@Override
public void process(Object obj) {
System.out.println("to uper case:" + ((String) obj).toUpperCase());
}
}
class LowerStringProcess extends StringProcess {
@Override
public void process(Object obj) {
System.out.println("to lower case:" + ((String) obj).toLowerCase());
}
}
class NumberAdapter implements Process{
private NumberOperator no;
public NumberAdapter(NumberOperator no){
this.no=no;
}
public String name() {
return no.name();
}
public void process(Object obj) {
no.process(obj);
}
}
interface NumberOperator {
int numbe1 = 10;
int number2 = 5;
String name();
void process(Object obj);
}
class AddNumber implements NumberOperator {
public String name() {
return "two number added!";
}
public void process(Object obj) {
System.out.println(obj);
System.out.println(numbe1 + number2);
}
}
class SubNumber implements NumberOperator {
public String name() {
return "two number sub!";
}
public void process(Object obj) {
System.out.println(obj);
System.out.println(numbe1 - number2);
}
}
相关文章推荐
- Adapter 模式的小例子以及分析
- 分析JDK中的Runtime的单例设计模式以及使用小例子
- cgi简介以及一个用shell脚本写的shell例子分析
- iOS 观察者模式以及代理的例子
- 三种工厂模式的分析以及C++实现
- java se中有关Iteractor模式以及原理分析
- 通过例子学设计模式之--外观模式以及使用场景说明(C++实现)
- 7、SpringMVC源码分析(2):分析HandlerAdapter.handle方法,了解handler方法的调用细节以及@ModelAttribute注解
- DX90SDK SDK源码分析(二) 推模式的例子
- 黑马程序员_多线程中的Lock锁,死锁以及单例设计模式分析
- Adapter设计模式的一个例子,HandlerAdapter
- JAVA的动态代理模式分析以及与spring AOP的比较
- ListView之BaseAdapter的基本使用以及ViewHolder模式
- python贡献度分析以及相关性分析小例子
- 一个例子讲解adapter设计模式(非常简单)
- 设计模式-六大设计原则(附加实际开发建议以及计算器例子)
- 通过例子学设计模式之--建造者模式以及使用场景说明(C++实现)
- SIP 严格路由和松散路由以及RFC3261例子分析
- MVP模式分析及简单例子
- cppunit原理分析以及例子