IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 设计模式:(kotlin)----代理模式---动态代理 -> 正文阅读

[移动开发]设计模式:(kotlin)----代理模式---动态代理

代码示例:

package com.lyc.myeight.interfaces

interface ZuFang {
        fun KanFang()
        fun DingJia(int: Int)
        fun QianHeTong()
}
package com.lyc.myeight

import android.util.Log
import com.lyc.myeight.interfaces.ZuFang

class Fangdong:ZuFang {
    companion object{
        val TAG="testlyc"
    }
    override fun KanFang() {
        Log.d(TAG,"kan")
    }

    override fun DingJia(int: Int) {
        Log.d(TAG,"一个月租金: $int")
    }

    override fun QianHeTong() {
        Log.d(TAG,"签合同")
    }
}

handler类:

package com.lyc.myeight

import android.util.Log
import java.lang.reflect.InvocationHandler
import java.lang.reflect.Method

class ZhongJieHandler :InvocationHandler{
    private var mTarget:Any?=null
    constructor(target: Any){
        this.mTarget=target
    }
    override fun invoke(p0: Any?, p1: Method?, p2: Array<out Any>?): Any? {
        Log.d("testlyc", "执行前")
        var result:Any?=null
        if (p1 != null) {
            result = p1.invoke(mTarget, *p2.orEmpty())
        }
       Log.d("testlyc", "执行后")
        return result
    }
}

Smart类:

package com.lyc.myeight

import com.lyc.myeight.interfaces.ZuFang
import java.lang.reflect.Proxy

class ZhongJieSmart {
    var mzuFang:ZuFang?=null
    constructor(zuFang: ZuFang){
        this.mzuFang=zuFang
        mzuFang=Proxy.newProxyInstance(
            zuFang.javaClass.classLoader,
            arrayOf(ZuFang::class.java),
            ZhongJieHandler(mzuFang!!)
        ) as ZuFang
    }
}

运行结果:

2022-06-30 14:51:32.299 15381-15381/com.lyc.myeight D/testlyc: 执行前
2022-06-30 14:51:32.299 15381-15381/com.lyc.myeight D/testlyc: kan
2022-06-30 14:51:32.299 15381-15381/com.lyc.myeight D/testlyc: 执行后
2022-06-30 14:51:32.299 15381-15381/com.lyc.myeight D/testlyc: 执行前
2022-06-30 14:51:32.299 15381-15381/com.lyc.myeight D/testlyc: 一个月租金: 300
2022-06-30 14:51:32.299 15381-15381/com.lyc.myeight D/testlyc: 执行后
2022-06-30 14:51:32.300 15381-15381/com.lyc.myeight D/testlyc: 执行前
2022-06-30 14:51:32.300 15381-15381/com.lyc.myeight D/testlyc: 签合同
2022-06-30 14:51:32.300 15381-15381/com.lyc.myeight D/testlyc: 执行后

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-07-04 23:03:58  更:2022-07-04 23:04:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 3:06:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码