ljzl0513 2016-01-30 12:44 采纳率: 100%
浏览 2433
已采纳

请问这是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方法设计的不合理,没有必要返回对象的。

    评论
  • zrf1335348191 博客专家认证 2016-01-31 06:57
    关注

    这是成员变量的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
    关注

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

    评论
查看更多回答(9条)

报告相同问题?

悬赏问题

  • ¥15 burpsuite密码爆破
  • ¥15 关于#ubuntu#的问题,如何解决?(相关搜索:移动硬盘)
  • ¥15 scikit安装之后import不了
  • ¥15 Ros2编译一个使用opencv的c++节点的时候,报了这个错误,请问怎么解决啊
  • ¥15 人脸识别相关算法 YOLO,AI等
  • ¥15 spark问题方便加V17675797079
  • ¥15 Python代码不打印的原因
  • ¥20 微软SEAL库的安装和使用,VS2022环境配置问题
  • ¥15 数学问题也不知道那种类型的问题
  • ¥15 R作图的时候,文本框重叠了怎么办?