JavaScript设计模式之代理模式介绍


Posted in Javascript onDecember 28, 2014

代理模式说明

说明:顾名思义就是用一个类来代替另一个类来执行方法功能,这个模式跟装饰模式有点相似,不一样的是,代理模式是代替客户初始化被代理对象类,而装饰模式采用接口或初装饰者参数引用的方式来执行的。

在动态面向对象语言里,代理模式即起到控制修饰被代理类的作用,也对被代理类起到了充分的隐藏保护作用;被代理类只到我们需要时,才被间接初始化调用;

场景描述:

很常见到的就是租房子的例子,房客要租房子,房东要把房子租出去,但是房客跟房东都没怎么有空找房子或在家等着有人看房子,就一同去找房屋中介。房东把房间委托给中介代理租售,有合适的人需要时,中介带看房间,交钱租住,这样就帮房东把房间租出去了;房客委托房属中介帮招要求的房间位置条件,中介帮房客找到合房后,两者交钱租住,这样就替房客租到住的地方了;

实例源码

按上面的例子来实现;

1. 房东出租类;

function Fangdong() {

    this.room = '房间名';

}

Fangdong.prototype.chuzu = function() {

    console.log('房东出租房间: ' + this.room);

}

2. 中介代理类:

function Proxy() {

    this.fangdong = new Fangdong();

}
Proxy.prototype.chuzu = function() {

    this.fangdong.chuzu();

    console.log('出租后收中介费');

}

3. 使用方法:

//房客请中介帮找房子;

var proxy = new Proxy();

proxy.chuzu();

看看上面的使用,被代理类在客户端完全用不着,只要使用Proxy类即可,可以很好使用在那种需要保护某些业务逻辑过程的情景中;使用代理模式,可以很好的保护需要保护的被代理类;

其他说明

跟装饰者模式一样,代理模式也很好的体现了面向对象思想的对扩展开放,对修改关闭的原则;
代理模式,可以使用接口或抽象类来规范共同的接口:(以下提供JAVA方式代理模式)

1. 抽象类 abstract 方式;

public abstract class House {

    public void abstract chuzu();

}
public class Fangdong extends House {

    private String room = “房间名称”;

    @Override

    public void chuzu() {

        System.out.println(room);

    }

}
public class Proxy extends House {

    private Fangdong fangdong;

    public Proxy() {

        this.fangdong = new Hangdong();

    }

    @Override

    public void chuzu() {

        this.fandong.chuzu();

        System.out.println(“出租后交中介费”);

    }

}
//使用

House house = new Proxy();

house.chuzu();

2. 接口 Interface 方式:

interface House {

    public void chuzu();

}
public class Fangdong implements House {

    private String room = “房间名称”;

    @Override

    public void chuzu() {

        System.out.println(room);

    }

}
public class Proxy implements House {

    private Fangdong fangdong;

    public Proxy() {

        this.fangdong = new Hangdong();

    }

    @Override

    public void chuzu() {

        this.fandong.chuzu();

        System.out.println(“出租后交中介费”);

    }

}
//使用

House house = new Proxy();

house.chuzu();
Javascript 相关文章推荐
在html页面上拖放移动标签
Jan 08 Javascript
JavaScript 放大镜 放大倍率和视窗尺寸
May 09 Javascript
jQuery基本过滤选择器使用介绍
Apr 18 Javascript
jquery解析json格式数据的方法(对象、字符串)
Nov 24 Javascript
js自定义回调函数
Dec 13 Javascript
通过正则表达式获取url中参数的简单实现
Jun 07 Javascript
解决webpack -p压缩打包react报语法错误的方法
Jul 03 Javascript
如何以Angular的姿势打开Font-Awesome详解
Apr 22 Javascript
利用js将ajax获取到的后台数据动态加载至网页中的方法
Aug 08 Javascript
Vue-component全局注册实例
Sep 06 Javascript
vue监听浏览器原生返回按钮,进行路由转跳操作
Sep 09 Javascript
Vue使用Element实现增删改查+打包的步骤
Nov 25 Vue.js
JavaScript设计模式之外观模式介绍
Dec 28 #Javascript
JavaScript阻止事件冒泡示例分享
Dec 28 #Javascript
jQuery中removeData()方法用法实例
Dec 27 #Javascript
jQuery中data()方法用法实例
Dec 27 #Javascript
jQuery中index()方法用法实例
Dec 27 #Javascript
jQuery中get()方法用法实例
Dec 27 #Javascript
jQuery的context属性用法实例
Dec 27 #Javascript
You might like
php.ini 中文版
2006/10/28 PHP
php数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
2013/07/03 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
2016/10/17 PHP
php7安装mongoDB扩展的方法分析
2017/08/02 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
关于javascript中this关键字(翻译+自我理解)
2010/10/20 Javascript
一个页面元素appendchild追加到另一个页面元素的问题
2013/01/27 Javascript
node.js中的console.log方法使用说明
2014/12/09 Javascript
jQuery编写设置和获取颜色的插件
2017/01/09 Javascript
JavaScript创建对象方法实例小结
2018/09/03 Javascript
nodejs 使用 js 模块的方法实例详解
2018/12/04 NodeJs
JS实现带阴历的日历功能详解
2019/01/24 Javascript
Vue实现table上下移动功能示例
2019/02/21 Javascript
vue语法自动转typescript(解放双手)
2019/09/18 Javascript
[00:12]2018DOTA2亚洲邀请赛SOLO赛 MidOne是否中单第一人?
2018/04/05 DOTA
利用python实现xml与数据库读取转换的方法
2017/06/17 Python
Tensorflow卷积神经网络实例进阶
2018/05/24 Python
python实现人性化显示金额数字实例详解
2020/09/25 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
2020/11/28 Python
CSS3解决移动页面上点击链接触发色块的问题
2016/06/03 HTML / CSS
如何用border-image实现文字气泡边框的示例代码
2020/01/21 HTML / CSS
巴西婴儿用品商店:Bebe Store
2017/11/23 全球购物
ASOS亚洲:ASOS Asia
2018/03/04 全球购物
智能钱包:Ekster
2019/11/21 全球购物
Nobody Denim官网:购买高级女士牛仔裤
2021/03/15 全球购物
恒华伟业笔试面试题
2015/02/26 面试题
十八届三中全会个人学习材料
2014/02/13 职场文书
护士岗位职责
2014/02/16 职场文书
工作违纪检讨书
2014/02/17 职场文书
三年级学生期末评语
2014/12/26 职场文书
2015毕业寄语大全
2015/02/26 职场文书
2015年医务人员医德医风自我评价
2015/03/03 职场文书
2016年元旦主持词
2015/07/06 职场文书
大队委员竞选稿
2015/11/20 职场文书
opencv 分类白天与夜景视频的方法
2021/06/05 Python