[编码模式]方法链

背景

方法链能够将对对象的函数调用放在一条语句里面。方法链模式的核心是上一个对象函数的调用,返回下一个函数调用的对象。

Builder模式可以书写成方法链。方法链与Builder的区别在于Builder存在一个中间对象Builder来暂存需要构建对象的属性。

方法链可能存在多线程问题。

场景

需要连写。

实例

final class RMBCurrency {
    private int yuan = 0;
    private int jiao = 0;
    private int fen = 0;

    public RMBCurrency setYuan(int yuan) {
        this.yuan = yuan;
        return this;
    }

    public RMBCurrency setJiao(int jiao) {
        this.jiao = jiao;
        return this;
    }

    public RMBCurrency setFen(int fen) {
        this.fen = fen;
        return this;
    }

    @Override
    public String toString(){
        return yuan + "." + jiao + "." + fen;
    }
}
public class Test{
    public static void main(String[] args){
        RMBCurrency currency = new RMBCurrency().setYuan(1).setJiao(1).setFen(1);
        System.out.print(currency);
    }
}
时间: 2024-10-09 21:08:16

[编码模式]方法链的相关文章

[Effective JavaScript 笔记]第60条:支持方法链

无状态的API的部分能力是将复杂操作分解为更小的操作的灵活性.一个很好的例子是字符串的replace方法.由于结果本身也是字符串,可以对前一个replace操作重复执行替换.这种模式的一个常见用例是在将字符串插入到HTML前替换字符串的特殊字符字母. function escapeBasicHTML(str){ return str.replace(/&/g,"&") .replace(/< /g,"<") .replace(/>/

方法链、作用域链和原型链(一)——方法链

方法链:当方法的返回值是一个对象时,这个对象还可以再调用它的方法.这种方法调用序列中,每次调用的结果都是另外一个表达式的组成部分. 比如:基于jQuery库,我们通常会写类似如下代码: $(this).next().show().siblings("li[class!=header]").hide(); 如果在设计的API中,每个方法都返回this,使用API就可以进行“链式调用”风格的编程.在这种风格的编程中,只要指定一次调用的对象,余下的方法都可以基于此方法进行调用: shape.

关于C# 在TXT写入数据使用UTF-8 bom编码模式

C#中通过 1 StreamWriter sw = new StreamWriter(path, true); 2 sw.WriteLine(Content); 这样的代码写入TXT中的数据默认的编码是GB2312格式,那么如何才能使用utf-8的编码格式写入TXT呢? 代码如下: 1 UTF8Encoding utf8 = new UTF8Encoding(false); 2 StreamWriter sw = new StreamWriter(path, true, utf8); 这样确实使

跟黄哥学python序列文章之python方法链(method chaining)

# 跟黄哥学python序列文章之python方法链(method chaining) ## 写这篇文章来由,有朋友说下面这样的代码看不懂. choice = raw_input("please input:\n").strip()[0].lower() 很多对于有经验的程序员来说,这些都不是事, 但对于初学者来说,看到这样的语法头有点大. ## 这个其实是面向对象中方法链的概念. ## 请看维基百科上Method chaining的定义 Method chaining, also k

测开之路一百零一:jquery文字特效、动画、方法链

文字特效 html内容 1.卷起/展开 2.隐藏/显示 3.淡入淡出 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <!--<script src="../js/jquery-3.4.1.min.js"></script>--&g

[编码模式]Execute Around

背景 很多时候,我们访问资源需要关注对资源的锁定.对资源的申请和释放,还有考虑可能遇到的各种异常.这些事项本身与代码的逻辑操作无关,但我们不能遗漏.Execute Around可以帮助我们,只是需要使用者指出我想怎么使用资源就可以.不需要考虑锁.资源申请释放,或者异常,对码农是一种解放. 场景 Execute Around需要定义操作资源的接口,该接口提供使用者来提供具体的实现.模式提供一个执行接口,该接口的实现来对资源使用前的准备工作,以及资源使用后的清理工作. 实例 public inter

[编码模式]单线程模拟并发

背景 曾几何时,机器支持的线程数目是一个8位的记录的.这就意味着最多支持的线程数目是255个.如果我们需要同时的执行流上千怎么办. 虽然现在有多核多线程,如果一个CPU已经满足需要你又想减少多线程开发的成本代价. 场景 此模式的核心是一个在单线程中执行的循环.循环通过等待需要的处理的任务. 实例 Task.java public interface Task {     public void execute(); } PrintTask.java public class PrintTask 

方法链、作用域链和原型链(三)——原型链

每一个javascript对象(null除外)都有一个prototype属性,这个属性引用了一个对象,即原型对象,都从原型继承属性. 所有通过对象直接量创建的对象都具有同一个原型对象,并可以通过javascript代码Object.prototype获得对原型对象的引用.通过关键字new和构造函数调用创建的对象的原型就是构造函数的prototype属性的值.因此,使用{}和通过new Object()创建的对象,都继承自Object.prototype. 没有原型的对象不多,Object.pro

jquery异步ajax与服务器通信过程中如何通过then方法链式传递多层数据

我们在有些地方可能需要对服务器返回的参数做多步处理,或者很多复杂的操作必须等到服务器返回结果之后才会执行,那么我们可以用链式调用的then方法让这里做到更加易于扩展,也更加容易分离出各个功能模块.基本的方法如下. 1 doSubmit: function(){ 3 $.ajax({ 4 url: url, 5 type: 'post', 6 data: $("#fm").serialize(), 7 dataType: 'html' 8 }).then(function(data){