首页 > 其他分享 >软件实验设计14

软件实验设计14

时间:2022-10-19 15:14:00浏览次数:43  
标签:java 14 Object System 实验设计 println 软件 public out

实验14:代理模式

[实验任务一]:婚介所

婚介所其实就是找对象的一个代理,请仿照我们的课堂例子“论坛权限控制代理”完成这个实际问题,其中如果年纪小于18周岁,婚介所会提示“对不起,不能早恋!”,并终止业务。

1.Customer.java

package test;

public class Customer implements Person{
    public void findLove(){
        System.out.println("17周岁");
        System.out.println("傻白甜");
        System.out.println("身高170cm");

    }
}

2.JDKMeipo.java

package test;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class JDKMeipo implements InvocationHandler{
    // 被代理的对象,把引用保存下来
    private Object target;

    public Object getInstance(Object target) throws Exception{
        this.target = target;
        Class<?> clazz = target.getClass();
        return Proxy.newProxyInstance(clazz.getClassLoader(),clazz.getInterfaces(),this);
    }

    public Object invoke( Object proxy, Method method, Object[] args ) throws Throwable{
        before();
        Object obj = method.invoke(this.target,args);
        after();
        return obj;
    }

    private void before(){
        System.out.println("我是媒婆:我给你找对象,现在请发送你的个人信息");
        System.out.println("开始确认---------");
    }

    private void after(){
        System.out.println("对不起,不能早恋!");
        System.out.println("终止业务-------");
    }
}

  3.Person.java

package test;

public interface Person {
    public void findLove();
}

  4.Test.java

package test;

public class Test {
    public static void main(String[] args){
        try {
            Person obj = (Person)new JDKMeipo().getInstance(new Customer());
            obj.findLove();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

  

标签:java,14,Object,System,实验设计,println,软件,public,out
From: https://www.cnblogs.com/lyf3701/p/16806300.html

相关文章

  • P4145 上帝造题的七分钟 2 / 花神游历各国
    题目链接P4145上帝造题的七分钟2/花神游历各国上帝造题的七分钟2/花神游历各国题目背景XLk觉得《上帝造题的七分钟》不太过瘾,于是有了第二部。题目描述"第一......
  • SigmaPlot 14.0软件安装包下载及安装教程
    SigmaPlot14.0软件简介:SigmaPlot14.0是Systat国际软件公司研发的一款强大的专业科学绘图软件,画出的精密的图型将变得极其容易,它被广泛地运用在医学、生命科学、化学、工程......
  • Linux系统编程 第14章学习笔记
    MySQL数据库系统 MySQL简介MySQL(MySQL2018)是一个关系数据库系统 MySQL安装sudoapt-getinstallmysql-server  MySQL使用安装、显示、新建、删除、选择......
  • 【2022-10-14】书,得好好读
    20:00要正直地生活,别想入非非,要诚实地工作,才能前程远大。                                  ......
  • docker安装jenkins+maven-3.6.3+node-v14.18.3+java-1.8.0
    安装maven-3.6.31)下载apache-maven-3.6.3-bin.tar.gzwget apache-maven-3.6.3-bin.tar.gz2)解压压缩包tar-xfapache-maven-3.6.3-bin.tar.gz-C /usr/local/3)配置......
  • leetcode-141-easy
    LinkedListCycle思路一:用set记录每个节点的hashCode,如果遇到重复,说明是循环publicbooleanhasCycle(ListNodehead){Set<Integer>set=newHashSet<>();......
  • Divide by Zero 2021 and Codeforces Round #714 C
    C.AddOne显然对于每一位单独分析我们经过一次进位只能变成10这样该怎么做呢我们显然可以dp设dp[i][j]表示i(0-9)经过j次变换有几位显然我们初始化i+j<10就是1elsed......
  • C# 桌面软件开发之超精简WinForm无边框方案(可靠边自动分屏)
    前言最近“解决自媒体一键多平台发布”项目立项以来,桌面端选择了WinForm进行开发(虽然丢了很多年,但总算多少了解点)。为了重绘标题栏、最大最小化按钮和关闭按钮,需要对WinF......
  • CF 1476F & CF713E
    CF1476FLanterns令\(dp_i\)表示前\(i\)个灯笼最远覆盖的位置,有:向右覆盖,若\(dp_{i-1}\gei\),\(dp_i=\max(dp_{i-1},i+p_i)\)否则\(dp_i=dp_{i-1}\)向左......
  • 神器软件:虚拟机软件安装与使用
    问什么是虚拟机?答虚拟机是一个软件。在自己电脑上通过虚拟机软件,可以模拟出新的电脑,并为其安装操作系统。问虚拟机有什么用?答使用电脑时,对一些软件不放心,担心其损坏电脑。或......