Default Adapter 模式
在Java中如果要定义事件处理的方式,必须实作EventListener的子介面,例如实作 WindowListener来定义一些视窗事件的处理方式,WindowListener中定义了七个方法:
public interface WindowListener extends EventListener { public void windowOpened(WindowEvent e); public void windowClosing(WindowEvent e); public void windowClosed(WindowEvent e); public void windowIconified(WindowEvent e); public void windowDeiconified(WindowEvent e); public void windowActivated(WindowEvent e); public void windowDecativated(WindowEvent e); }
可以定义一个类别来实作这个介面,以完全想要的事件处理,例如:
public class WindowEventHandler implements WindowListener { public void windowOpened(WindowEvent e) {} public void windowClosing(WindowEvent e) {} public void windowClosed(WindowEvent e) { System.exit(0); } public void windowIconified(WindowEvent e) {} public void windowDeiconified(WindowEvent e) {} public void windowActivated(WindowEvent e) {} public void windowDecativated(WindowEvent e) {} }
然而这有个缺点,实作介面的原则是您必须实作当中所定义的所有方法,即使您对某些事件并不感兴趣,您也必须实作一个没有内容的空方法,代表您已经实作了介 面中定义的方法,然而有时,您并不知道介面中到底定义了几个方法,或是知道也不知道方法的确切名称与参数,即使您查了API,在程式中写下一堆没有实作内 容的方法也是很烦人的一件事。
WindowAdapter类别预先实作了WindowListener介面,每个方法中都是空的实作,如下所示:
public abstract class WindowAdapter implements WindowListener { public void windowOpened(WindowEvent e) {} public void windowClosing(WindowEvent e) {} public void windowClosed(WindowEvent e) {} public void windowIconified(WindowEvent e) {} public void windowDeiconified(WindowEvent e) {} public void windowActivated(WindowEvent e) {} public void windowDecativated(WindowEvent e) {} }
可以继承WindowAdapter类别,并重新定义一些您所感兴趣的事件,如此一来,就可以避开之前所提及的,直接实作 WindowListener介面的缺点,如下所示:
public class WindowEventHandler extends WindowAdapter { public void windowClosed(WindowEvent e) { System.exit(0); } }
这就是Default Adapter模式,它使用一个中介的Adapter类别来将真正感兴趣的事件实作类别,配接至事件处理介面,上面的程式其 UML 图如下:
将上图一般化,Default Adapter模式的结构如下所示:
转自:http://www.riabook.cn/doc/designpattern/DefaultAdapter.htm
相关推荐
【Adapter模式】 Adapter模式是一种设计模式,它允许不同接口的类之间进行通信。在Android开发中,Adapter模式常用于将数据源(如数组、列表)与视图(如ListView、GridView)进行适配,使得数据能够正确地显示在UI...
在这个例子中,`PowerAdapter` 通过继承 `Light` 类实现了类适配器模式,这样可以利用继承带来的多态性。同时,适配器也通过内部持有 `Light` 对象实现了对象适配器模式,通过委托调用来实现接口的转换。 测试这些...
<ImageView android:src="@drawable/ic_default" android:id="@+id/image"/> ``` 4. **视图持有者(ViewHolder)**:优化性能的关键在于使用ViewHolder模式,它缓存了列表项视图的引用,避免频繁的findViewById...
然后又使用 Default Adapter 模式为这个接口提供缺省实现的抽象类 TestCase,这样开发人员就可以从这个缺省实现进行继承,而不必从 Test 接口直接实现。 三、其他设计模式 除了 Command 模式外,JUnit 中还使用了...
3. **缺省适配器模式(Default Adapter Pattern)**: - 当一个类需要使用某个接口,但不希望实现所有的接口方法时,缺省适配器模式可以派上用场。在这种模式下,我们可以创建一个适配器类,实现接口中的所有方法,...
tcpip_adapter_init(); // 初始化TCP/IP协议栈 ESP_ERROR_CHECK(esp_event_loop_init(event_handler, NULL)); // 初始化事件处理函数 wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); ESP_ERROR_CHECK...
DefaultAdapter adapter = new DefaultAdapter(); System.out.println(adapter.getInfo()); } ``` 通过上述示例,我们可以看到,适配器模式在Java编程中有着广泛的应用场景,无论是对于现有类的接口转换还是新...
- **缺省适配**(Default Adapter):可能是默认适配器模式,允许一个类实现接口中的一部分或全部方法,而不用实现所有方法。 - **合成**(Composite):合成模式将对象组合成树形结构以表示“部分-整体”的层次...
例如,适配器模式(Adapter)用于将不兼容的接口转换为可使用的接口;装饰器模式(Decorator)允许在运行时向对象添加新的行为或责任;代理模式(Proxy)为其他对象提供一个替身以控制对这个对象的访问;桥接模式...
七、适配器模式(Adapter) 适配器模式使得两个不兼容的接口能够协同工作。在C++中,可以使用类或对象适配器来实现接口转换,使得旧的类库或组件能够适应新的系统需求。 八、桥接模式(Bridge) 桥接模式将抽象部分...
在这个过程中,他们关注的重点是数据适配器(DefaultAdapter)、基类视图持有者(BaseHolder)以及ListView的加载更多功能和多类型复用原理。 首先,我们来详细了解一下这些知识点: 1. **DefaultAdapter**: ...
- **适配器模式**(Adapter Pattern): 将一个类的接口转换成客户希望的另一个接口。 - **备忘录模式**(Memento Pattern): 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 - **组合...
DefaultAdapter继承自BaseAdapter,它需要重写`getCount()`(返回数据项数量)、`getItem(int position)`(返回指定位置的数据项)和`getView(int position, View convertView, ViewGroup parent)`(返回视图)方法...
##### 适配器模式(Adapter Pattern) 适配器模式使得一个接口不兼容的类可以一起工作。它通过创建一个适配器类,将原接口转换为目标接口所期望的形式。 ```javascript class Target { request() { return '...
在这种模式下,虚拟机的网络配置通常由VMnet1的DHCP服务器动态分配,Host-only网络下的虚拟机Default Gateway为空,因为没有路由器为VMnet1提供外部网络访问。 这三种模式各有优缺点: - **桥接模式**提供了最灵活...
8. 相关NetApp命令:fcp show adapter、lun show、igroup show、fcp show adapter igroup show等命令都是NetApp存储中的重要命令,这些命令用于查看NetApp存储的FC端口、LUN、igroup等信息。 知识点:NetApp命令、...
### 适配器模式(Adapter Pattern) 适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。在JavaScript中,可以通过创建一个新的类来“包装”原有的类,并提供一个符合新接口的方法。 ### 组合...
##### 4.4 适配器模式(Adapter Pattern) 适配器模式是一种结构型设计模式,它允许不兼容的接口协同工作。这种模式可以用来让已存在的类可以与其他没有预期的类一起工作,通常用于系统重构或者整合第三方库时。 `...