最近学习了一下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()//最后我的朋友去实现买饭的方法
}
这样一个完整的静态代理模式就产生了,动态代理在以后的博客中会讲到