java模板模式

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 17:11   1518   0

1、父类

class Person {
 public final void excute(String methodName) {
  Method[] mArray = this.getClass().getMethods();
  for (Method m : mArray) {
   if (m.getName().startsWith(methodName)
     && Modifier.isPublic(m.getModifiers())
     && m.getReturnType().equals(Void.TYPE) && !m.isVarArgs()
     && !Modifier.isAbstract(m.getModifiers())) {
    try {
     m.invoke(this);
    } catch (IllegalAccessException e) {
     e.printStackTrace();
    } catch (IllegalArgumentException e) {
     e.printStackTrace();
    } catch (InvocationTargetException e) {
     e.printStackTrace();
    }
   }
  }
 }
}


2、子类

class Hanmeimei extends Person {
 public void eatApple() {
  System.out.println("Hanmeimei eatApple");
 }

 public void eatTomato() {
  System.out.println("Hanmeimei eatTomato");
 }
}

class Lilei extends Person {
 public void sleepInBed() {
  System.out.println("Lilei sleepInBed");
 }

 public void sleepInFloor() {
  System.out.println("Lilei sleepInFloor");
 }
}


3、使用

Person hanmeimei = new Hanmeimei();
  hanmeimei.excute("eat");
  Person lilei = new Lilei();
  lilei.excute("sleep");


4、结果

Hanmeimei eatApple
Hanmeimei eatTomato
Lilei sleepInBed
Lilei sleepInFloor


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP