party-bid短信处理,sms责任链模式

责任链模式优化短信处理
本文通过一个具体的短信处理示例,对比展示了使用责任链模式前后代码的变化,突出了责任链模式带来的高可读性和清晰逻辑结构。通过将功能模块化,并采用责任链的方式组织这些模块,使得程序更易于维护和扩展。

<div class="iteye-blog-content-contain" style="font-size: 14px"></div>

为了使我们的程序看起来更加面向对象,我们不但要把自己的代码功能模块化,每个函数只实现一个功能,还要写成责任链的模式,使我们的程序可读性更强,逻辑更加清晰。下面是我在party-bid里的短信处理SMS的一个例子。第一段就是用责任链的模式写的,第二段是没有实现没有改写之前的代码,它们实现了同样的功能,大家可以对比看到责任链模式的优越性。

function SMS(phone, type, value) {
    this.phone = phone
    this.type = type
    this.value = value
}

function notify_sms_received(json_message) {
    _.each(json_message.messages, function (num) {
        new SMS(num.phone,num.message.substr(0, 2).toUpperCase(),num.message.substr(2).trim()).start()
    })
}

SMS.prototype.start = function () {
    if (this.bm() == false) {
        this.jj();
    }
}

SMS.prototype.bm = function () {
    if (this.type == 'BM' && localStorage.is_signing_up == 'true') {
        return SignUp.judge_repeat_phone(this.value, this.phone)
    }
    return false
}

SMS.prototype.jj = function (){
    if(this.type == 'JJ' && !isNaN(this.value) && localStorage.is_bidding == 'true' && Bidding.get_name(localStorage.current_activity,localStorage.current_bid,this.phone)){
        return Bidding.judge_repeat_phone(this.value, this.phone)
    }
}

 

function notify_sms_received(json_message) {
    var SMSObj = sms_to_obj(json_message)
    var flag = SMSObj.text.substr(0, 2).toUpperCase()
    var phone = SMSObj.phone
    if (flag == "BM") {
        var name = SMSObj.text.substr(2).trim()
        return process_sign_up_message(name, phone)
    }
    var price = SMSObj.text.substr(2).trim()
    if (flag == 'JJ' && !isNaN(price)) {
        return process_bid_message(price, phone)
    }
}

function process_sign_up_message(name, phone) {
    if (localStorage.is_signing_up == 'true') {
        return SignUp.judge_repeat_phone(name, phone)
    }
}

function process_bid_message(price, phone) {
    if (localStorage.is_bidding == 'true' && Bidding.get_name(localStorage.current_activity,localStorage.current_bid,phone)) {
        return Bidding.judge_repeat_phone(price, phone)
    }
}

function sms_to_obj(json_message){
    var SMSObj;
    _.each(json_message.messages, function (message) {
        SMSObj = {
            'text': message.message,
            'phone': message.phone
        }
    })
    return SMSObj
}

 

 
//========================================= // BidCms 程序说明 //========================================= 尊敬的朋友你们好,感谢您选择BidCms开源竞拍系统,BidCms自发布以来已经经历了三个版本的更新,功能也越来越丰富,系统也更加稳定成熟。这也是更多的站长毫不犹豫选择BidCms的理由。我们至力于电子商务十余年的研究开发,准确的把握电子商务的发展方向,推出了一系列的软件,受到了广大朋友的一至拥护,我们专注,所以专业 BidCms系统优点如下: 1.抗压能力强,经压力测试CPU最高占用40%,内存最高700M,在同行业中处于领先地位 2.数据库压力小,采用了大量缓存及内存表设计 3.功能丰富,竞猜,积分,自动出价等功能应有尽有 4.集成ucenter能与各种程序会员同步共享,免激活一步注册 5.集成短信验证,实名制让客户更信任网站 6.互动性强,留言反馈,聊天室, 7.诚信度高,晒单功能,让客户来证明商品的质量 8.支持伪静态 以及更多的功能等待您去发现 演示地址:http://jingpai.cc //========================================= // BidCms 程序安装文档 //========================================= 1.本程序绑定ucenter,如果您本机上已有ucenter可以跳过ucenter安装,如果没,请先运行ucenter安装程序:http://您的域名/uc_server/install/index.php 1. 将 upload 文件夹下所有的文件上传至根目录 2. 如果您的主机为 *nix 操作系统,请设置如下文件夹权限为 777 ./data ./data/adjs ./data/cache ./data/logo ./data/sqlbackup ./data/upload ./data/goods 3. 通过浏览器访问 http://您的域名/install/index.php, 根据提示填写 mysql 配置信息、管理员账号信息 4. 通过 FTP 删除 install 目录 5. 进入ucenter管理后台添加ucenter应用,将生成的信息复制到data/config.uc.php中,如果通信成功,则安装成功 6. 完成安装
【事件触发一致性】研究多智能体网络如何通过分布式事件驱动控制实现有限时间内的共识(Matlab代码实现)内容概要:本文围绕多智能体网络中的事件触发一致性问题,研究如何通过分布式事件驱动控制实现有限时间内的共识,并提供了相应的Matlab代码实现方案。文中探讨了事件触发机制在降低通信负担、提升系统效率方面的优势,重点分析了多智能体系统在有限时间收敛的一致性控制策略,涉及系统模型构建、触发条件设计、稳定性与收敛性分析等核心技术环节。此外,文档还展示了该技术在航空航天、电力系统、机器人协同、无人机编队等多个前沿领域的潜在应用,体现了其跨学科的研究价值和工程实用性。; 适合人群:具备一定控制理论基础和Matlab编程能力的研究生、科研人员及从事自动化、智能系统、多智能体协同控制等相关领域的工程技术人员。; 使用场景及目标:①用于理解和实现多智能体系统在有限时间内达成一致的分布式控制方法;②为事件触发控制、分布式优化、协同控制等课题提供算法设计与仿真验证的技术参考;③支撑科研项目开发、学术论文复现及工程原型系统搭建; 阅读建议:建议结合文中提供的Matlab代码进行实践操作,重点关注事件触发条件的设计逻辑与系统收敛性证明之间的关系,同时可延伸至其他应用场景进行二次开发与性能优化。
<think>嗯,用户想了解CSS中的unicode-bidi属性的用法和示例。首先,我需要回忆一下这个属性的基本作用。记得unicode-bidi是用来处理文本方向的双向算法的,特别是在混合了不同书写方向的文本时,比如同时有从左到右(LTR)和从右到左(RTL)的内容。 首先,我应该解释unicode-bidi的基本用途,可能和direction属性一起使用。然后需要说明它的可能取值,比如normal、embed、bidi-override等。每个值的作用需要明确区分,比如embed和bidi-override的区别,以及isolate这个值的作用,虽然可能有些浏览器支持度的问题。 接下来,用户可能需要示例,所以得举几个常见的应用场景。比如在混合语言文本中调整顺序,或者强制改变某些元素的文本方向。比如,在阿拉伯文中嵌入英文引文时,可能需要用unicode-bidi: embed和direction: rtl来确保正确显示。 另外,需要注意安全问题,比如bidi-override可能被滥用来隐藏恶意内容,这点要提醒用户。然后还要提到兼容性问题,尤其是isolate的支持情况,可能需要替代方案。 还要检查是否有相关的引用资料,用户提供的引用中提到了CSS2.1的属性,可能引用[^1]中的内容,说明规范中的要求。而引用[^2]提到了逻辑属性,虽然和unicode-bidi不直接相关,但可能涉及文本方向的处理,可以适当关联。 最后,生成相关问题,考虑用户可能的后续问题,比如与direction属性的区别,最佳实践,兼容性处理,以及实际案例。这些问题应该能帮助用户进一步理解该属性的应用。</think>### CSS `unicode-bidi` 属性详解 #### 1. 基本定义 `unicode-bidi` 是CSS中用于控制文本双向算法(Bidirectional Algorithm)的属性,主要解决混合书写方向文本(如LTR左到右与RTL右到左)的显示问题。常与 `direction` 属性配合使用[^1]。 #### 2. 语法与取值 ```css .element { unicode-bidi: normal | embed | isolate | bidi-override | isolate-override | plaintext; } ``` - **normal**(默认): 不创建额外嵌入层级 - **embed**: 为内联元素开启双向算法嵌入层级 - **bidi-override**: 强制按 `direction` 属性值显示文本,忽略字符本身的定向性 - **isolate**: 隔离文本片段(需浏览器支持) #### 3. 典型应用场景 ##### 示例1:混合语言排版 ```html <div style="direction: rtl; unicode-bidi: embed"> العربية (阿拉伯语) <span style="direction: ltr">(English)</span> </div> ``` 此例确保英文括号内容在阿拉伯语环境中保持LTR顺序。 ##### 示例2:强制文本方向 ```css .force-rtl { unicode-bidi: bidi-override; direction: rtl; } ``` 该样式会强制所有字符(包括数字和拉丁字母)按从右向左排列。 #### 4. 安全注意事项 使用 `bidi-override` 时需注意可能被滥用于文本伪装: ```css /* 危险示例:显示顺序与源码顺序相反 */ .malicious { unicode-bidi: bidi-override; direction: rtl; } ``` 实际显示内容可能与源码顺序完全相反,需谨慎使用。 #### 5. 兼容性说明 - `isolate` 值需要现代浏览器支持(可搭配 `-webkit-isolate`) - 建议始终配合 `direction` 属性使用 - 在旧版浏览器中,`embed` 可作为降级方案
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值