当前位置:  开发笔记 > 编程语言 > 正文

简单的场景,如何合并告诉不要问?

如何解决《简单的场景,如何合并告诉不要问?》经验,为你挑选了0个好方法。

我正在尝试模拟涉及人员和座位的基本场景.人具有身份属性:坐着或站立.一个席位有一个Seated属性,用于指定当前位于其中的Person.此外,座位特别之处在于它只"接受"某些人坐在其中.我知道座位"接受"某人听起来很奇怪,但只是想象它更喜欢某些人而不是其他人.

在" 告诉,不要问 "之后,我应该如何设计Person和Seat对象,以便只有当Seat"接受"他并且他的状态改为Sitting时,Person才能坐在座位上.我的第一个想法是一个Person应该有一个SitDown方法如下:

Person.SitDown(Seat seat);

但这似乎需要Person类在坐在其中之前检查Seat的状态,以及必须更新Seat的Seated属性(而不是更新属性本身的Seat):

// inside the Person class
void SitDown(Seat seat) {
    if (seat.AcceptsPlayer(this)) {
        seat.Seated = this;
        this.Status = Sitting;
    }
}

让Seat类处理一个人似乎更好:

Seat.SeatPerson(Person person);

// inside Seat class
void SeatPerson(Person person) {
    if (IsAccepted(person)) {
        this.Seated = person;
        person.Status = Sitting;
    }
}

但这仍然要求座位改变此人的身份.这是该人的状态应该更新的方式吗?只有一个人能够改变他的身份吗?你会如何模拟这个简单的场景?

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有