类中方法的增强

第一种方式:继承方式(能够控制这个类的构造的时候使用)

class Man{

public void run(){

System.out.println("跑....");

}

}

 

class SuperMan extends Man{

public void run(){

// super.run();

System.out.println("飞....");

}

}

 

第二种方式:装饰者设计模式

        1.包装对象和被包装对象都必须实现相同的接口

         2.包装对象需要获得被包装对象的引用

          3.缺点:如果接口的方法比较多,增强其中某个方法,其他的功能的方法需要原有调用

interface Waiter{

public void server();

}

class Waiteress implements Waiter{

@Override

public void server() {

System.out.println("服务...");

}

}

class WaiteressWrapper implements Waiter{

    private Waiter waiter;

public WaiteressWrapper(Waiter waiter) {

     this.waiter = waiter;

}

@Override

public void server() {

System.out.println("微笑...");

// this.waiter.server();

}

}

第三种方式:动态代理(被增强的对象实现接口就可以)

接口类:Waiter
public interface Waiter {  
    public void serve();  
    public String sayhello();  
}  

实现类:Waitress
public class Waitress implements Waiter {  
    @Override  
    public void serve() {  
        System.out.println("您要点儿什么呢?");  
    }  
    @Override  
    public String sayhello() {  
        System.out.println("hello world");  
        return null;  
    }  
  
}

代理类:ProxyDemo
public class ProxyDemo {  
    @Test  
    public void strengthen(){  
        //获得要增强实现类的对象  
        final Waiter waiter = new Waitress();  
        /* 
         * Proxy为代理类。 
         * newProxyInstance为Proxy的静态方法,此方法用于实现动态代理 
         * 返回值为增强类要实现的接口对象 
         * 此方法需要接受三个参数:类加载器、被增强类所要实现的全部接口、处理类 
         *  
         */  
        //类加载器  
        ClassLoader classLoader = waiter.getClass().getClassLoader();  
        //被增强类所要实现的全部接口  
        Class<?>[] interfaces = waiter.getClass().getInterfaces();  
        //处理类一般是通过创建匿名内部类来实现的。  
        Waiter waiterProxy = (Waiter)Proxy.newProxyInstance(classLoader, interfaces, new InvocationHandler() {  
            /* 
             * proxy:产生的代理对象的引用 
             * method:当前正在调用的目标类的方法 
             * params:只在执行的方法中的参数。 
             */  
            //需要注意的是我们无论调用waiterProxy中的任何方法都会执行invoke。所以我们可以在invoke中做一个判断,  
            //从而只执行我们想要的方法。  
            @Override  
            public Object invoke(Object proxy, Method method, Object[] params) throws Throwable {  
                //根据方法名来执行我们需求中的方法。  
                if("serve".equals(method.getName())){  
                    System.out.println("欢迎光临");  
                    //这里我们使用了method的invoke来执行waiterProxy中的方法。  
                    Object object = method.invoke(waiter, params);  
                    System.out.println("谢谢光临");  
                    return object;  
                }else{  
                    //只执行了原来的方法,没有进行增强。  
                    Object object = method.invoke(waiter, params);   
                    return object;  
                }     
            }  
        });  
        waiterProxy.serve();  
        //waiterProxy.sayhello();  
    }  
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
化学学习心得体会 兴趣是最好的老师。首先你要培养起对化学学习的兴趣,而后才能学好化学。想想老师上课时做的一些生动的试验,提出的一些探索性的问题,你是否对化学感兴趣了呢? 学习化学还要掌握方法: 课前预习很重要。如果光凭上课听老师讲,有些抽象的东西没办法在脑子里快速的反应出来,所以达不到良好的听课效果。 其次,还要多做题目,有些东西只能意会不能言传,所以只有在做题的时候才能真正体会出某些概念的真正含义。 最后,要学会总结,分专题的总结。化学知识,即相互联系又很松散。所以需要通过总结形成一定的知识网络,再把松散的知识,分归纳记忆。这要做到由点至面的总结复习,化学成绩一定会有所进步! 具体做法: 1.主要是课堂听讲,笔记很重要. 2.其次不要钻难题和偏题,基础为主. 3.概念要记牢,公式要熟用. 4.不要进行题海战术,要举一反三,多思考,多用脑子。 5.要爱化学,多与生活实际联系,解决具体问题,其实很有意思的. 6.可以自己当老师预习,备教案,可增强记忆效果. 7要学会分题型,分专题的总结和反思。 做好这些,相信你一定能喜欢上化学,学好化学, 其实化学真的很好学! 一篇学习心得体会: 探寻适合自己的科学学习方法,提高自己的学习效率和成绩 学习阶段:屁股→手→脑袋→心 学习的理念 基础阶段: 第一,正直是做人的基本素质之一,高考也是公平的竞争。我们要给自己、给家长、给周围的人表现真实的自我:真实的成绩就是诚实的反馈!要杜绝歪门邪道、急功近利、弄虚作假的一切不道德行为,阶段效果描述 屁股 手 脑 心 用屁股学习是最初的也是最基本的阶段,成绩大幅度提高的学生的共同点就是“屁股坐得住”。“坐得住”意味着坐到座位上最少要2个小时不挪窝,高考是2 -2.5小时考一科,如果坐不住,就连考试都应对不了。同学们可以循序渐进有意识地锻炼自己的定性,能达到2 小时不动了,就再适当延长时间,慢慢地就会发现,随着时间的增加能提高精神集中力。能长时间坐得住已经意味着成功了一半,每个人都要时常检查一下自己的屁股是不是固定在课桌前边。 只用眼睛看的学习就像用没有线的针缝衣服一样荒谬。在学习过程中,动手写、算非常重要,随着动手写过的纸张堆积高度的增加可以看到成绩的攀升。一旦屁股和手的阶段习惯化了,在自己都感觉不到的时候成绩已经进入了高分行列。能坐得住,手也充分调动起来了,下一步就是排除杂念制定目标。在充分理解高考出题原则的基础上,按各科的学习特点从基础知识到深化学习,自我开发学习方法,动员自己的头脑,实现自我开拓。 前三个阶段都做到了,学习自然就进入了用心感受的阶段。通过学习能感到欢喜,感觉到学习的喜悦、幸福、充实、满足感,能感觉到学习的最终目的带给自己的成就感,从而迸发出对学习的无限热忱!这对培养自己的人格也是有着举足轻重的作用的。 第二,要做一个有孝心的人。“可怜天下父母心”,父母对自己的孩子都是倾注了满腔的爱的。理解父母对自己的殷切希望,珍惜自己所拥有的健康家庭,时常想想能为父母为家庭做点什么,并立刻付诸实施。 成熟阶段: 第三,要有远大的理想。坚定理想信念,把理想按阶段分割成一个个看得见摸得着的短期目标,譬如现在的短期目标就是考上理想大学。有了远大理想和短期目标,可以使我们忘却困难而奋发拼搏。第四,要做一个会思考且时常思考的人。回眸过去,品味现在,展望将来,通过反复思考寻找新的自我,更加坚定自己的目标与理想! 二、高中各学科学习方法指导 语文 注重基础知识的积累,注重基本技能的提高,强调多读多想多说多写。高中的语文学习是在初中学习基础上的继续提高、拓展,而高中的语文学习与初中又有了明显的不同。初中语文课老师讲得多,要记背的东西多;高中是语文课堂讨论多,要理解研究的东西多。初中的课堂讨论,一般有明确的结论,并多以老师的总结和说法作为标准;高中的课堂讨论,有些没有固定结论,老师的说法常常只是一家之言,只要你言之成理可以自圆其说,便能得到认可。 初中的课堂是跟着老师走,老师问什么就答什么,课堂的主要时间都是老师在讲解、提问;高中的课堂是跟着问题走,透彻清楚地讨论问题是重点所在,老师讲得少,学生的活动多。相应的,初中的作业可以在“教参”上找到答案;而高中的作业有些需要自己创造发挥。初中语文学什么考什么,怎么学就怎么考,重在知
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值