Kotlin版代理模式

最近学习了一下android设计模式,第一次写博客,希望大家对有写的不好的地方积极指正

上正题代理模式顾名思义,我让别人代理我去做我要做的事情,,属于设计模式种的结构设计模式的一种,官方定义为:为其他对象提供一种代理以控制这个对象的访问,代理模式有四个角色:抽象主题类、真实主题类、代理类、客户端类

上一个例子:我想去买饭,可是我在宿舍还没起,我就让我舍友帮我买饭。

在这里买饭就是我想做的事(抽象主题类),我要买饭(真实主题类),我的朋友帮我买(代理类),最后再去客户端调用就行。

1.首先我要定义抽象买饭的类:

​
/**
 * 抽象主题类
 */
 interface IBuy{
     fun buy()
}

​

2.我去实现这个方法(因为是我要买饭,我必须实现这个接口的方法)

/**
 * 真实的主体类
 */
 class MY : IBuy{
     //实现接口的方法
     override fun buy() {
         println("买一份宫保鸡丁")
     }
}

3.我的朋友帮我去买(他代理我去买  代理类)

在代理类中要持有抽象主题类,且要实现这个接口(因为我的朋友是通过这个接口中的buy方法知道我的buy方法要干什么,所以要持有IBuy引用)

/**
 * 代理类
 */
//将IBuy在主构造函数中
class MyFriends (mShop:IBuy):IBuy{
    var mShop:IBuy=mShop//初始化IBuy
    //代理中去实现buy方法
    override fun buy() {
        mShop.buy()
    }
}

4.客户端实现

/**
 * 客户端类
 */
fun main(args: Array<String>) {
    var s:IBuy=MY()//先将我创建出来
    var p:IBuy=MyFriends(s)//再创建我的朋友,将我传进去(遵守的是里氏替换原则)
    p.buy()//最后我的朋友去实现买饭的方法
}

这样一个完整的静态代理模式就产生了,动态代理在以后的博客中会讲到

猜你喜欢

转载自blog.csdn.net/qq_41316046/article/details/88391605
今日推荐