首页 > web前端 > js教程 > 正文

JavaScript设计模式之代理模式介绍_javascript技巧

php中文网
发布: 2016-05-16 16:24:08
原创
1411人浏览过

代理模式说明

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

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

立即学习Java免费学习笔记(深入)”;

场景描述:

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

实例源码

按上面的例子来实现;

1. 房东出租类;


复制代码 代码如下:

function Fangdong() {
    this.room = '房间名';
}
Fangdong.prototype.chuzu = function() {
    console.log('房东出租房间: ' + this.room);
}

2. 中介代理类:

魔法映像企业网站管理系统
魔法映像企业网站管理系统

技术上面应用了三层结构,AJAX框架,URL重写等基础的开发。并用了动软的代码生成器及数据访问类,加进了一些自己用到的小功能,算是整理了一些自己的操作类。系统设计上面说不出用什么模式,大体设计是后台分两级分类,设置好一级之后,再设置二级并选择栏目类型,如内容,列表,上传文件,新窗口等。这样就可以生成无限多个二级分类,也就是网站栏目。对于扩展性来说,如果有新的需求可以直接加一个栏目类型并新加功能操作

魔法映像企业网站管理系统 0
查看详情 魔法映像企业网站管理系统

复制代码 代码如下:

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();

相关标签:
java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号