android开发之代理模式
来源:互联网 发布:ftp主进程打开的端口 编辑:程序博客网 时间:2024/06/07 01:57
代理模式
代理模式也是平时比较常用的设计模式之一,代理模式其实就是提供了一个新的对象,实现了对真实对象的操作,或成为真实对象的替身.在日常生活中也是很常见的.例如A要租房,为了省麻烦A会去找中介,中介会替代A去筛选房子,A坐享中介筛选的结果,并且交房租也是交给中介,这就是一个典型的日常生活中代理模式的应用.平时打开网页,最先开到的一般都是文字,而图片等一些大的资源都会延迟加载,这里也是使用了代理模式.
Abstract Subject:抽象主题 --> 声明代理主题和真实主题的接口;
Real Subject :真实主题 --> 被代理主题所引用;
Proxy Subject:代理主题 --> 可以实现跟真是主题一样的接口,那么代理主题可以操作真实主题。
这里就拿A找中介租房为Demo来构建代理模式.
根据场景先定义一个抽象主题,Ihouse,提供三个方法,分别是获取房屋信息,签合同和付租金.
public interface Ihouse { void getInfo(); void getHetong(); void getPay();}接下来定义真实主题,并实现Ihouse接口.增加房屋名称和价格两个属性,填充借口方法,在获取房屋信息的时候就把房屋名称和价格log出来;付租金的时候log出价格.
public class House implements Ihouse{ private String name ; private int price ; public House(String name, int price) { this.name = name; this.price = price; } @Override public void getInfo() { //log测试输出 Log.d("qq","name:" + name); } @Override public void getHetong() { } @Override public void getPay() {//log测试输出 Log.d("qq","price:" + price); }}定义房屋代理,同样需要实现Ihouse接口,并持有House的引用.可以看到代理类其实就像有封装House,提供了一些附加操作,例如客户要看房子的时候代理会先检索自己库存的房屋信息,签合同之前要准备合同之类的.
public class Pay implements Ihouse{ private Ihouse ihouse ; public Pay(Ihouse ihouse) { this.ihouse = ihouse; } @Override public void getInfo() { ihouse.getInfo(); } @Override public void getHetong() { ihouse.getHetong(); } @Override public void getPay() { ihouse.getPay(); }}对于客户来说,完全不用跟House进行直接交互,这里先定义一个房子叫aaa,租金20,建立一个房屋代理,把aaa给代理.客户要找房子,签合同,付租金直接找代理就行了.
Ihouse h = new House("aaa",20); Ihouse h1 = new Pay(h); h1.getInfo(); h1.getPay(); h1.getHetong();
阅读全文
0 0
- android开发之代理模式
- android应用开发设计模式之代理模式
- android应用开发设计模式之代理模式
- Android的开发之&java23中设计模式------>代理模式
- Android插件化开发基础之静态代理模式
- iOS开发之代理模式
- iOS开发模式之代理
- Android开发中的代理模式
- Android IPC之代理模式
- java 开发模式之十三 : 代理模式
- android设计模式之代理模式
- Android设计模式之代理模式 Proxy
- Android设计模式之代理模式 Proxy
- Android设计模式之代理模式 Proxy
- android 设计模式之代理模式
- Android设计模式之代理模式 Proxy
- Android设计模式之代理模式 Proxy
- Android 设计模式之代理模式
- python学习笔记之os.path系统文件夹的操作
- HDU 饭卡(01背包)
- DLUTOJ 1158艾尔大停电(二分答案+预处理DP)
- DataNode之BlockSender分析
- 60个BCB(C++Build)初学者 应用实例
- android开发之代理模式
- 并查集 入门-HDU 1232
- 归并排序
- 基于NFS v4版本搭建NFS服务器
- RecyclerView嵌套RecyclerView 条目自动上滚的bug
- vue2 npm run build 打包出来的dist 文件夹资源引用加载错误
- Softmax函数与交叉熵
- 网易有道2017内推编程题:构造队列 [python]
- Mac下查看某个接口被占用的情况