• 看似简单类型设计题


    周二去一次面试,在做一个题目中,要求实现一个学生类Student,再实现两个类继承它们,分别表示男生和女生。

    当时,匆匆忙忙地,也没多想,把Student类的属性敲上,再在Boy和Girl类中的构造函数中,分别设置this.Sex = true和this.Sex = false。

    实际运用中,这样肯定不合理,男生和女生的Sex是固定的(一般情况下,哈),不能在实例创建后修改。只能将Sex属性的set的访问级改成protected。

    可是,这个protected实在是太刺眼了,而且因为子类的逻辑而迫使父类作修改,既破坏了开放闭合(OCP)原则,又因为出现Student的地方不能简单地用Boy或Girl替换,违反了LSP原则。不管我们怎么调整子类,这怎么都无法避免。

    解决办法还得从Student类开始,这个类应该被设计成抽象类,Sex是抽象属性,从而Boy和Girl类必须实现Sex。虽然题目中说学生要有姓名、出生日期、性别属性,但并没有说一定是具体实现,而应该结合题意通盘考虑。所以,这道题实际上我不及格。

  • 相关阅读:
    C# 导入Excel遇到数字字母混合列数据丢失解决
    C# 导出 Excel
    DataGridView 改变行列颜色
    EditPlus使用技巧
    jquery的事件与应用
    jquery操作DOM元素的复习
    jquery笔记
    jquery 和ajax
    jQuery笔记
    CSS相关知识三
  • 原文地址:https://www.cnblogs.com/XmNotes/p/2348382.html
Copyright © 2020-2023  润新知