`
SunMicro
  • 浏览: 20994 次
社区版块
存档分类
最新评论

Pluggable Adapters

阅读更多

A pluggable adapter is an adapter that adapts dynamically to one of several classes. Of course, the adapter can adapt only to classes that it can recognize, and usually the adapter decides which class it is adapting to based on differing constructors or setParameter methods.

Java has yet another way for adapters to recognize which of several classes it must adapt to: reflection. You can use reflection to discover the names of public methods and their parameters for any class. For example, for any arbitrary object you can use the getClass method to obtain its class and the getMethods method to obtain an array of the method names.

java 代码
  1. /*
  2. *Adaptee
  3. */
  4. class Pathfinder
  5. {
  6. public void explore()
  7. {
  8. System.out.println("explore");
  9. }
  10. }
  11. /*
  12. *Target
  13. */
  14. class Digger
  15. {
  16. public void dig()
  17. {
  18. System.out.println("Dig");
  19. }
  20. }
  21. /*
  22. *Target
  23. */
  24. class Collector
  25. {
  26. public void collect()
  27. {
  28. System.out.println("collect");
  29. }
  30. }
  31. /*
  32. *Adapter
  33. */
  34. class PluggablePathfinderAdapter
  35. {
  36. private Pathfinder pathfinder;
  37. private HashMap map=new HashMap();
  38. PluggablePathfinderAdapter(Pathfinder pathfinder)
  39. {
  40. this.pathfinder=pathfinder;
  41. }
  42. public void adapt(String classname,String methodname)
  43. {
  44. try
  45. {
  46. Class _class=Class.forName(classname);
  47. Method method=_class.getMethod(methodname,null);
  48. map.put(classname,method);
  49. }catch(ClassNotFoundException cnfe)
  50. {
  51. cnfe.printStackTrace();
  52. }catch(NoSuchMethodException nsme)
  53. {
  54. nsme.printStackTrace();
  55. }
  56. }
  57. public void explore(String classname)
  58. {
  59. try
  60. {
  61. pathfinder.explore();
  62. map.get(classname).invoke(Class.forName(classname).newInstance(),null);
  63. }catch(Exception e)
  64. {
  65. e.printStackTrace();
  66. }
  67. }
  68. }

java 代码
  1. public class PluggableAdapterDemo
  2. {
  3. public PluggableAdapterDemo()
  4. {
  5. }
  6. public static void main(String[] args)
  7. {
  8. Pathfinder pathfinder=new Pathfinder();
  9. PluggablePathfinderAdapter adapter=new PluggablePathfinderAdapter(pathfinder);
  10. adapter.adapt("Digger","dig");
  11. adapter.adapt("Collector","collect");
  12. adapter.explore("Digger");
  13. }
  14. }
分享到:
评论

相关推荐

    二十三种设计模式【PDF版】

    主要是介绍各种格式流行的软件设计模式,对于程序员的进一步提升起推进作用,有时间可以随便翻翻~~ 23种设计模式汇集 如果你还不了解设计模式是什么的话? 那就先看设计模式引言 ! 学习 GoF 设计模式的重要性 ...

    Pluggable Factory part1

    ### Pluggable Factory Part 1:复合设计模式的探索与应用 #### 一、引言 在本篇文章中,John Vlissides 探讨了复合设计模式的概念,并提出了一种名为 Pluggable Factory 的模式作为示例。这篇文章最初发表于 1998...

    ABB Pluggable OVR-Multi-Pole样本.pdf

    在低压电器领域,ABB同样提供了一系列高品质的产品,其中ABB Pluggable OVR-Multi-Pole产品就是其中的一个代表。 首先,Pluggable OVR-Multi-Pole是一种多极可插拔开关,是ABB低压配电产品线的一部分。多极开关在...

    ORA-65122_ Pluggable database GUID conflicts with the GUID

    ORA-65122_ Pluggable database GUID conflicts with the GUID of an existing_ITPUB博客.mhtml

    my broswer Asynchronous Pluggable Protocol

    Asynchronous Pluggable Protocol(简称APR)是Microsoft为Windows平台设计的一种机制,允许开发者创建自定义的网络协议,这些协议可以被应用程序异步地使用,从而提高系统性能并优化用户体验。 在给定的文件列表中...

    Asynchronous Pluggable Protocol异步可插的协议(9KB)

    Asynchronous Pluggable Protocol(简称APP)是一种网络通信协议,主要设计用于实现高效、灵活的异步通信。在IT行业中,这种协议常被应用于开发网络应用程序,尤其是那些需要处理大量并发连接和数据传输的场景。APP...

    perl-Module-Pluggable-3.90-141.el6_7.1.x86_64.rpm

    解决Linux MySQL缺失依赖包 perl-Module-Pluggable-3.90-141.el6_7.1.x86_64.rpm

    Oracle 12c 新特性 - pluggable database[转]

    在这个版本中,Oracle引入了一个革命性的新特性——可插拔数据库(pluggable database,简称PDB),这一特性极大地增强了数据库的灵活性和可维护性。 可插拔数据库(PDB)的核心理念是将一个物理数据库容器(CDB,...

    SFF-8665_QSFP+ 28 Gbs 4X Pluggable Transceiver Solution (QSFP28).PDF

    This specification defines a 28 Gb/s QSFP+ pluggable transceiver solution popularly known as QSFP28. It gathers the appropriate/unique Base Electrical, Optical, Common Management, Module/Plug ...

    PyPI 官网下载 | tgext.pluggable-0.8.1.tar.gz

    标题中的“PyPI 官网下载 | tgext.pluggable-0.8.1.tar.gz”指的是一个在Python Package Index(PyPI)上发布的软件包,名为“tgext.pluggable”。这个版本号为0.8.1,打包格式是tar.gz。PyPI是Python开发者分享和...

    QSFP (Quad Small Formfactor Pluggable) Transceiver

    QSFP 模块 MSA 标准, 可插拔QSFP收发模块标准和Specification文件。

    win-acme.v2.1.22.1267.x64.pluggable.zip

    win-acme是一款免费SSL证书自动获取和部署工具,由于官方下载慢,特提供Csdn版本供使用. 具体的使用教程可看我收集的好文地址https://blog.csdn.net/r657225738/article/details/103778925

    PyPI 官网下载 | pyramid_pluggable_session-0.0.0a2.tar.gz

    《Pyramid Pluggable Session:Python Web开发中的会话管理》 Pyramid Pluggable Session是Python Web框架Pyramid中的一个扩展,它提供了一种灵活的方式来管理用户会话。这个扩展允许开发者根据需求选择不同的会话...

    win-acme.v2.1.4.710.x64.pluggable.zip

    标题中的"win-acme.v2.1.4.710.x64.pluggable.zip"是一个软件包,主要用于为网站获取和管理免费的SSL证书。这个程序是win-acme工具的一个版本,它是一个自动化证书管理工具,尤其适用于IIS(Internet Information ...

    win-acme.v2.1.2.641.x64.pluggable.zip

    win-acme是一款免费SSL证书自动获取和部署工具,非常难下载,托朋友下载的,资源宝贵,具体的使用教程可看我收集的好文地址https://blog.csdn.net/r657225738/article/details/103778925

    Pluggable Factory part2

    可插拔工厂(Pluggable Factory)模式是软件设计模式的一种,主要目的是允许在不替换具体工厂类实例的情况下,动态地指定和改变产品类型。这一模式是对抽象工厂(Abstract Factory)模式的一种扩展,同时结合了原型...

    PyPI 官网下载 | django-pluggable-contact-0.0.5.tar.gz

    标题中的“PyPI 官网下载 | django-pluggable-contact-0.0.5.tar.gz”指的是一个在Python Package Index(PyPI)上发布的开源软件包。PyPI是Python开发者发布自己编写的Python模块和库的地方,使得其他开发者可以...

    SFF-8431 Specifications for Enhanced Small Form Factor Pluggable Module SFP+

    This document defines the low speed electrical and management interface specifications for enhanced Small Form Factor Pluggable(SFP+) modules and hosts. The SFP+ module is a hot pluggable small ...

    win-acme.v2.1.16.1030.x64.pluggable.zip

    win-acme是一款免费SSL证书自动获取和部署工具,由于官方下载慢,特提供Csdn版本供使用. 具体的使用教程可看我收集的好文地址https://blog.csdn.net/r657225738/article/details/103778925

    QSFP+40G 协议,QSFP+ 10 Gbs 4X PLUGGABLE TRANSCEIVER

    QSFP+ 10 Gbs 4X PLUGGABLE TRANSCEIVER

Global site tag (gtag.js) - Google Analytics