2 ljzl0513 ljzl0513 于 2016.01.30 20:44 提问

请问这是java中的设计模式吗?

请问下面的代码属于什么设计?为什么把set方法改成那样子

public class A{
private Integer num;
private String min;

public Integer gerNum(){
    return num;
}
public A num(Integer num){
    this.num = num;
    return this;
}

public String getMin(){
    return min;
}
public A min(String min){
    this.min = min;
    return this;

}

}

10个回答

devmiao
devmiao   Ds   Rxr 2016.01.30 23:04
已采纳

return this;
这种写法被叫做链式调用。你可以一路点下去。比如

class Cat
{
public Cat 叫()
{
...
return this;

}
public Cat 喝水()
{
...
return this;
}
public Cat 吃东西()
{
...
return this;
}
...
}

你可以这么调用:
Cat c = new Cat();
c.叫().喝水().叫().吃东西();
如果不返回this,就得这么写:
Cat c = new Cat();
c.叫();
c.喝水();
c.叫();
c.吃东西();

fk002008
fk002008   2016.01.31 01:02

这个不是设计模式

第二个至于你说的把set方法改成那个样子

public A min(String min){
    this.min = min;
    return this;
}

其实呢这个类并没有给出set方法。不是类中定义了get方法就要这个set方法的。
并不是把set方法改成那样子,根本上是不提供这个。

如果你硬要套这个包装装饰模式,到也有那一丝意味
使用num或者min来包装一个对象A,很形象。

但是并没有对象上面的包装需求。

所以这个类的设计纯粹就是根据对象的状态来构造一个对象,但是无法更改对象的属性。

如果你把类的定义改成这个

public final class A
加上final 那么这个类的定义符合immutable模式

devmiao
devmiao   Ds   Rxr 2016.01.30 23:01

这不是什么设计模式,只是java中的属性。又叫get/set。java并没有属性的概念,只能用方法模拟。

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.01.31 12:28

不是设计模式,而且set方法设计的不合理,没有必要返回对象的。

zrf1335348191
zrf1335348191   2016.01.31 14:57

这是成员变量的get和set方法啊

Love667767
Love667767   2016.06.26 22:59

把实体Bean过度设计了。估计是想做成链式调用的,省点事儿吧。 搞得不伦不类的

qq_35024791
qq_35024791   2016.06.28 16:20

成员变量的get和set方法,用来取值与赋值用的!!!

wangdan901990
wangdan901990   2016.06.29 09:26

从代码的内容来看,只是初学者简单的语法实现,不涉及设计模式的范畴。

vawe222
vawe222   2016.07.15 06:57

不知道比正常的非链式开销大不大,有没有做过试验的?

91program
91program   Ds   Rxr 2016.01.30 20:52

类的基本思想: 成员变量不能直接访问,访问需要通过成员函数(接口)来进行。
只要接口不变,类的内部如何实现具体的功能,调用接口的人不用在意。这就是封装的概念!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!