package com.facade;
import java.lang.reflect.Method;
import com.sun.beans.ObjectHandler;
/**
* 加载门面
*
* @author
*/
public class LoadFacade
{
/**
* 根据对象、方法、参数列表,返回结果
*
* @param obj 对象
* @param methodName 方法名称
* @param params 参数列表
* @return 返回结果
*/
public static Object invoke(Object obj, String methodName, Object[] params)
{
Object resultObj = null;
Method[] methods = obj.getClass().getMethods();
for (Method method : methods)
{
// 判断方法名称和参数列表是否一致
if (method.getName().equals(methodName) && getOverLoader(method.getParameterTypes(), params))
{
try
{
resultObj = method.invoke(obj, params);
break;
}
catch (Exception e)
{
// 什么都不处理(异常丢弃)
}
}
}
return resultObj;
}
/**
* 判断参数列表是否一致
*
* @param paramTypes 参数类型
* @param params 变量类型
* @return 参数列表一致性
*/
private static boolean getOverLoader(Class<?>[] paramTypes, Object[] params)
{
boolean flag = true;
// 无参数
if (null == paramTypes && null == params)
{
return flag;
}
// 参数个数不一致
if (null == paramTypes && null != params || null != paramTypes && null == params
|| paramTypes.length != params.length)
{
flag = false;
return flag;
}
// 参数类型是否一致
int size = paramTypes.length;
for (int index = 0; index < size; index++)
{
// 基本类型需要包装
if (paramTypes[index].isPrimitive())
{
paramTypes[index] = ObjectHandler.typeNameToClass(paramTypes[index].getName());
}
// 参数类型不相同
if (!paramTypes[index].getSimpleName().equals(params[index].getClass().getSimpleName()))
{
flag = false;
break;
}
}
return flag;
}
}
分享到:
相关推荐
门面模式(Facade Pattern)是软件工程中一种常用的设计模式,属于结构型模式。它提供了一个统一的接口,用来访问子系统中的一群接口。门面模式使得子系统的使用更为简单,同时也隐藏了子系统的复杂性,使得客户端...
在提供的资源“第17课_设计模式之门面模式.avi”中,可能包含了对门面模式的详细讲解和实例演示,可以帮助你更深入地理解和掌握这一设计模式。通过观看视频,你将有机会看到如何在实际代码中应用门面模式,以及如何...
门面模式作为23种设计模式之一,其核心思想是提供了一个统一的接口,使得子系统的复杂性对外部客户端透明,从而简化了客户端与子系统之间的交互。本文将详细介绍门面模式的组成、应用案例、适用场景和优势,并探讨其...
单体模式是JavaScript中最基本的设计模式之一。它的主要作用是提供一个命名空间,减少全局变量的数量,避免代码冲突,并组织代码使其易于维护。单体模式可以用来划分命名空间,组织代码和避免代码冲突。 2. 工厂...
门面模式(Facade Pattern)是软件工程中一种常用的设计模式,属于结构型模式,它提供了一个统一的接口,用于访问子系统中的一组接口。在面向对象设计中,门面模式为子系统提供了更简单的接口,使得客户端可以更容易...
门面模式(Facade Pattern)是软件工程中一种结构型设计模式,它提供了一个统一的接口,用来访问子系统中的一组接口。这个统一的接口使得客户端不必了解子系统内部的复杂性,只需要与门面进行交互即可。门面模式简化...
门面角色:客户端可以调用这个角色的方法。此角色知道子系统的功能和责任。在正常情况下,本角色会将所有从客户端发来的请求委派到相应的子系统中去。 子系统角色:可以同时有一个或者多个子系统。每一个子系统都...
设计模式之 Facade(门面?) 可扩展的使用 JDBC针对不同的数据库编程,Facade提供了一种灵活的实现. 设计模式之 Composite(组合) 就是将类用树形结构组合成一个单位.你向别人介绍你是某单位,你是单位中的一个元素...
门面模式(Facade)是设计模式中的一种结构型模式,它的主要目的是为了解决复杂的系统接口问题,提供一个简单的统一接口,使得客户端可以更方便地使用系统。在C++编程中,门面模式的应用尤为常见,它能有效地降低...
根据提供的文档概览,我们可以对每个章节所涉及的设计模式进行详细的阐述和解释。下面将针对文档中提及的设计模式逐一展开,以便更好地理解这些模式的概念、结构、应用场景以及优缺点。 ### 1. 面向对象程序设计...
### C++设计模式之门面模式(Facade Pattern) #### 一、门面模式概述 在软件工程领域,设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易...
代理模式是另一种在J2EE中广泛使用的设计模式,它允许我们通过代理类间接调用原始对象的方法,以实现如访问控制、性能优化等功能。代理模式可以分为访问代理、虚拟代理和远程代理等不同类型,提供了更多的灵活性和...
门面(Facade)模式是一种设计模式,它在软件工程中被广泛使用,目的是为了提供一个更简单、更统一的接口来访问复杂的子系统。通过门面模式,客户端(调用者)无需直接与子系统中的多个组件交互,而是只需要与门面...
6. **工厂方法模式**:工厂方法模式是一种创建型设计模式,它提供了一个创建对象的接口,但让子类决定实例化哪一个类。这样,工厂方法可以把创建对象的责任推迟到子类,使得程序更具灵活性。在Java中,可以定义一个...
- 简单工厂模式(非23种设计模式之一):通过一个工厂类来创建对象,简化客户端代码。 - 工厂方法模式:定义一个创建对象的接口,让子类决定实例化哪一个类。 - 抽象工厂模式:提供一个接口,用于创建相关或依赖对象...
门面模式(Facade Pattern)是一种结构型设计模式,它的主要目的是提供一个统一的接口,用来访问子系统中的一组接口。这个接口使得子系统更容易使用,同时也减少了客户端代码与子系统之间的耦合。门面模式通常用于...
标题“java设计模式资源下载”和描述“策略模式、代理模式、单例模式、多例模式、工厂方法模式、抽象工厂模式、观察者模式、适配器模式、门面模式、桥梁模式”指向了设计模式这一软件工程中至关重要的概念。设计模式...
根据给定的信息,“Java设计模式之禅”是一本旨在通过轻松幽默的方式介绍23种经典设计...接下来的章节还会介绍更多设计模式,如门面模式、适配器模式、模板方法模式等,帮助读者全面了解面向对象设计的核心思想和技术。
Java设计模式和J2EE设计模式是构建大型企业级应用的核心技术之一,它们提供了解决常见软件设计问题的标准模板。设计模式是经验丰富的开发者在实践中总结出的最佳实践,被广泛应用于J2EE多层系统架构中,包括架构设计...
本资源“设计模式三层结构C#源码”包含了三种经典的设计模式:工厂模式、策略模式和门面模式,以及它们在C#语言中的实现。下面将分别详细介绍这三种设计模式,并结合三层结构的概念进行讨论。 首先,工厂模式是一种...