zoukankan      html  css  js  c++  java
  • OOD沉思录 --- 面向动作与面向对象 --- 避免泛滥成灾的类

    3.7 从设计中取出不需要的类    

    只有Get/Set方法的类不算是一个必要的类,Get/Set方法也不算是有意义的行为。这种类降级为属性更加合适。

    3.8 去除系统外部的类    

    如果一个类只调用系统领域的方法,而系统没有向该类调用,则可以认为这个类并不属于系统。可能只是系统的使用者,我们没必要去为此建模。     创建此类时应该问一问“这个类在系统内做什么事情?”

    3.9 不要把操作变成类。    

    “我需要一个做。。。事情的类”,如果有这种想法,请先认真斟酌。这个类真的代表了某个关键抽象概念吗?     

    名字是动词或者派生自动词的类很值得怀疑,应该考虑这个类可能只是一个尚待发掘的抽象概念的一个行为。     

    但是Command模式是例外,因为它本来就是用来封装操作的。

    3.10 在分析阶段我们经常引入代理类,在设计阶段,我们常会发现很多代理类是没有用的,应当去除。     

    面向对象的奶牛生产面向对象的牛奶,那么是奶牛向牛奶发送"uncow yourself"?还是牛奶向奶牛发送"unmilk yourself"?     

    我们可能面对此尴尬时想到应该有一个奶农的代理类,负责消息控制,如果真的如此,那奶牛和牛奶还有什么有意义的行为了?     

    我个人认为这个问题比较有两面性,不完全赞同,也不是到处都合适。在MVC架构中经常会看到这种情况.

  • 相关阅读:
    请使用支持 JDBC 4.0 的 sqljdbc4.jar 类库
    add jars和add external jars有什么区别
    JDBC连接sql server数据库的详细步骤和代码
    ios 开发中 动态库 与静态库的区别
    Core Data使用之一(Swift): 获取
    南邮NOJ整除的尾数
    南邮NOJ卡片游戏
    南邮NOJ卡片游戏
    南邮NOJ卡片游戏
    南邮NOJ卡片游戏
  • 原文地址:https://www.cnblogs.com/stst/p/4909576.html
Copyright © 2011-2022 走看看