ljzl0513
2016-01-30 12:44
采纳率: 50%
浏览 2.4k
已采纳

请问这是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 2016-01-30 15: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.吃东西();

    已采纳该答案
    打赏 评论
  • 91program 2016-01-30 12:52

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

    打赏 评论
  • devmiao 2016-01-30 15:01

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

    打赏 评论
  • lambda-fk 2016-01-30 17: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模式

    打赏 评论
  • 毕小宝 2016-01-31 04:28

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

    打赏 评论
  • 这是成员变量的get和set方法啊

    打赏 评论
  • Elson_6 2016-06-26 14:59

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

    打赏 评论
  • qq_35024791 2016-06-28 08:20

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

    打赏 评论
  • wangdannnnnnn 2016-06-29 01:26

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

    打赏 评论
  • vawe222 2016-07-14 22:57

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

    打赏 评论

相关推荐 更多相似问题