代码之家  ›  专栏  ›  技术社区  ›  Patrik Björklund

我应该为所有不同的交互实例化新对象吗?

  •  1
  • Patrik Björklund  · 技术社区  · 16 年前

    我很难理解物体的概念以及它们应该如何相互作用/存在。

    例如,当我的数据库不相关时,我是否应该有不同的对象(好吧,maybee,我指的是这里的数据库连接,如果有任何不同的话)来与我的数据库进行交互?

    假设我有一个index.php用来从数据库获取和显示内容的对象。 以及另一个用户用于在数据库中添加/删除内容的对象。我们可以说,这些对象都是dbinteract类,它保存了所有用于处理数据库的函数。

    或者,我应该将类划分为以下类型:dbconnection、dbdisplay、dbinsertion、dbmodification,然后将dbconnection发送到其他对象?

    我觉得我错过了一些非常明显的东西,如果不知道自己在思考过程中哪里出错,我很沮丧,我想我在这里寻找一个问题和一个答案。

    索引文件

    $connection = new dbconnection();
    $displayer = new dbdisplay();
    
    $activeconnection = $connection->connecttodatabase();
    $pagetodisplay = $connection->getcontentofpagetodisplay($query);
    $displayer->displayPage($activeconnection, $pagetodisplay);
    

    用户插入程序

    $inserter = new dbinsert();
    $usersdbconnection = new dbconnection();
    
    $inserter->newPost($userdbconnection, $usercredentials, $posttextfromuser);
    $usersdbconnection->closedatabaseconnection();
    
    3 回复  |  直到 16 年前
        1
  •  1
  •   Benedict Cohen    16 年前

    你似乎在错误的抽象层次上思考。OOP允许您考虑“用户”和“文章”,而不是“数据库连接”和“页面”。

    我不确定我是否完全理解这个问题-我认为您的问题是“哪个对象应该负责连接到数据库?”。只需创建一次与数据库的连接。然后可以在所有对象之间共享此连接。要共享连接,您需要创建一个类,连接到数据库的所有其他类都可以从该类继承,并且 static 该类中的变量,以确保只存在一个连接对象。

    用其他语言 静止的 变量通常被称为 class 变量。

        2
  •  1
  •   chaos    16 年前

    在我看来,你缺少的是面向对象的编程并不是为了让你按照规则做额外的工作,而是为了让你的生活更轻松。如果这不能让你的生活更轻松,那你就错了。

        3
  •  1
  •   bumperbox    16 年前

    有时候书比上网好 我觉得这本书很有用。 这些例子倾向于Java,但可以应用于任何语言。

    http://oreilly.com/catalog/9780596008673/

    推荐文章