代码之家  ›  专栏  ›  技术社区  ›  JW.

同一类中的OOP值对象和实体

  •  1
  • JW.  · 技术社区  · 16 年前

    我经常遇到这样的情况:我需要的类可以有实体或值对象的子类。

    例如,url对象。有无数的网址在那里,所以他们都不能真正成为实体。但有些是非常特殊的网址,比如我的主页。这是一个实体。

    我设想了很多:

    class factory { 
     reconstitute($rawdata) {
      if (raw data has identity)
       load up and return entity version of the class 
      else
       load up and return anonymous/value object version of the class
    

    这一切似乎有点奇怪。

    有没有什么模式可以讨论处理这个问题的最佳方法?

    1 回复  |  直到 16 年前
        1
  •  0
  •   Dusty Lau    16 年前

    我不确定我完全理解你的场景,但是。。。这真的重要吗? 根据我使用EFs/ORMs的经验,做您想做的事情的最好方法(我能想到的)是让您的实体类根据类中定义的业务规则来决定是否从数据库中加载/持久化自己。

    $url = new URLClass('KEY_DATA') // returns loaded object url if key if found in database
    $url = new URLClass() // returns new url object
    $url = new URLClass('', '110011000110010001000011101010010100') // returns new url with data loaded from raw data
    

    不确定这是否真的对你有帮助,或者它是否适用。