解决方案 »
- spring 配置文件拆分 问题
- SWT的TableItem使用上的一点疑惑
- 有java gui的基础ppt没,
- 在eclipse中写个连接oracle的数据库程序,运行正常,导出jar文件运行,就连接不上了,还需要什么操作么?
- 目前最快的N皇后问题算法!!!
- 用poi读取excel数据,发生错误。
- 请问怎么在字符界面上输入一个LONG,FLOAT等类型的数值给变量,有什么函数可以做到吗?
- 请看看这段关于hashtable遍历的程序有什么错误?
- 请问大家谁有JReport的注册码
- 请教一个关于Collections.nCopies的问题
- Iterator接口中的hasNext方法在哪里被重写了???
- 几个有趣的问题?
比如说ByteArrayInputStream 就是一个适配器
ByteArrayInputStream 继承了InputSteam的接口,而封装了一个Byte数组。也就是说
他将一个byte数组的接口适配成InputStream流处理器的接口
当然 java的io大部分都是由适配器模式和装饰模式结合起来,或者我们称之为半透明的装饰模式。
从iterator到Enumeration也是用了适配模式
Iterator对象封装在一个Enumeration类型的具体类中。
通常使用适配器模式的情况在于系统需要现有的类,而此类的接口不符合系统要求。
}class Circle() implements Shape{
private ConcreteCircle c;
public Circle(ConcreteCircle c){
this.c=c;
}
public void draw() {
c.concreteDraw();
}
}
class ConcreteCircle(){
public void concreteDraw(){ System.out.println("同学实现的");
}
}
适配器模式,将一个类的接口转换成客户希望的另外一个接口。Adapter模式使原本由于接口不兼容而不能一起工作的类可以一起工作。
因为 Shape 已经定义了统一的接口 ,虽然你的同学实现了相同功能 但是与规定的借口不相符,所以定义一个
适配器来把接口转换为 符合规格的接口
说实话 真的很差
adapter 主要用来 适配两个不符的接口,大多是为了重用已有的系统功能。你看上面那个例子 真的很差。。你说大师我不知道
不过 设计模式入门 我还是推荐 《设计模式解析》 这本书真不错
有些书写的感觉例子易懂但是思想不够
import java.awt.event.*;
import javax.swing.*;public class TestFrame extends JFrame
{
public TestFrame()
{
this.setPreferredSize(new Dimension(400, 300));
this.addWindowListener(new WindowListener()
{
public void windowActivated(WindowEvent arg0)
{} public void windowClosed(WindowEvent arg0)
{} public void windowClosing(WindowEvent arg0)
{
System.exit(0);
} public void windowDeactivated(WindowEvent arg0)
{} public void windowDeiconified(WindowEvent arg0)
{} public void windowIconified(WindowEvent arg0)
{} public void windowOpened(WindowEvent arg0)
{}
});
}
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
JFrame frame = new TestFrame();
frame.pack();
frame.setVisible(true);
}
});
}
}
用Adapter写的程序import java.awt.*;
import java.awt.event.*;import javax.swing.*;public class TestFrame extends JFrame
{
public TestFrame()
{
this.setPreferredSize(new Dimension(400, 300));
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent arg0)
{
System.exit(0);
}
});
}
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
JFrame frame = new TestFrame();
frame.pack();
frame.setVisible(true);
}
});
}
}
这个例子给力,还有其他的例子吗 ,the more the better