Re: DDD Implementation: Marker interfaces for all classes

"João Bragança [email protected] [domaindrivendesign]" <[email protected]> Sat, 13 Aug 2016 18:15:33 +0200
Newsgroups gmane.comp.programming.domain-driven-design
Message-ID <CACxseT6ueNfp8tB2LoXsCwkgJVjXLOB_OQxmbskOy+FWZPU7MA@mail.gmail.com>
--001a113d7b4a08a7220539f64fdf
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

You're about to enter a world of pain; 1/10 would not recommend. The only
time I've seen infrastructurey base classes as useful in the domain is for
an aggregate and possibly an entity, if only to make the event sourcing
glue less annoying.

On Aug 13, 2016 4:30 PM, "Niklas Mehner [email protected]
[domaindrivendesign]" <[email protected]> wrote:

>
>
> Hello everyone,
>
> We are currently in a somewhat heated discussions about the design for a
> new software.
>
> One of the discussion points is the use of marker interfaces.
>
> I am perfectly fine with using marker interfaces like:
>
> SomeService implements DomainService {
>    ...
> }
>
> to make the architecture visible in the code and implement some
> verification of code properties.
>
> But now some people want to add the requirement to have assign each class
> to a building block (Entity/Value Object/Service/...).
> Has anybody ever successfully done this? Is this even possible without
> some "GenericImplementationObject" building block?
>
> Thank you & best regards,
>   Niklas
>
>
>=20
>

--001a113d7b4a08a7220539f64fdf
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable





<head>

<style type=3D"text/css">
<!--

/* start of attachment style */
       .ygrp-photo-title{
         clear: both;
         font-size: smaller;
         height: 15px;
         overflow: hidden;
         text-align: center;
         width: 75px;
       }
       div.ygrp-photo{
         background-position: center;
         background-repeat: no-repeat;
         background-color: white;
         border: 1px solid black;
         height: 62px;
         width: 62px;
       }

       div.photo-title=20
         a,
         div.photo-title a:active,
         div.photo-title a:hover,
         div.photo-title a:visited {
           text-decoration: none;=20
       }

       div.attach-table div.attach-row {
         clear: both;
       }

       div.attach-table div.attach-row div {
         float: left;
         /* margin: 2px;*/
       }

       p {
         clear: both;
         padding: 15px 0 3px 0;
	 overflow: hidden;
       }

       div.ygrp-file {
         width: 30px;
         valign: middle;
       }
       div.attach-table div.attach-row div div a {
         text-decoration: none;
       }

       div.attach-table div.attach-row div div span {
         font-weight: normal;
       }

       div.ygrp-file-title {
         font-weight: bold;
       }
 /* end of attachment style */
        -->
        </style>
        </head>
<html>
<head>
<style type=3D"text/css">
<!--
#ygrp-mkp {
  border: 1px solid #d8d8d8;
  font-family: Arial;
  margin: 10px 0;
  padding: 0 10px;
}

#ygrp-mkp hr {
  border: 1px solid #d8d8d8;
}

#ygrp-mkp #hd {
  color: #628c2a;
  font-size: 85%;
  font-weight: 700;
  line-height: 122%;
  margin: 10px 0;
}

#ygrp-mkp #ads {
  margin-bottom: 10px;
}

#ygrp-mkp .ad {
  padding: 0 0;
}

#ygrp-mkp .ad p {
  margin: 0;
}

#ygrp-mkp .ad a {
  color: #0000ff;
  text-decoration: none;
}
-->
</style>
</head>
<body>



<!-- |**|begin egp html banner|**| -->

<br><br>

<!-- |**|end egp html banner|**| -->


<p dir=3D"ltr">You&#39;re about to enter a world of pain; 1/10 would not re=
commend. The only time I&#39;ve seen infrastructurey base classes as useful=
 in the domain is for an aggregate and possibly an entity, if only to make =
the event sourcing glue less annoying.</p>
<div class=3D"gmail_extra"><br><div class=3D"gmail_quote">On Aug 13, 2016 4=
:30 PM, &quot;Niklas Mehner <a href=3D"mailto:[email protected]">nikl=
[email protected]</a> [domaindrivendesign]&quot; &lt;<a href=3D"mailto:do=
[email protected]">[email protected]</a>&gt=
; wrote:<br type=3D"attribution"><blockquote class=3D"gmail_quote" style=3D=
"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">






=20=20=20=20=20=20=20=20




<div>





<br><br>




<div dir=3D"ltr"><div><div><div><div><div><div><div><div>Hello everyone,<br=
><br></div>We are currently in a somewhat heated discussions about the desi=
gn for a new software.<br><br></div>One of the discussion points is the use=
 of marker interfaces.<br><br></div>I am perfectly fine with using marker i=
nterfaces like:<br><br></div>SomeService implements DomainService {<br>=C2=
=A0=C2=A0 ...<br>}<br><br></div><div>to make the architecture visible in th=
e code and implement some verification of code properties.<br></div><div><b=
r></div>But now some people want to add the requirement to have assign each=
 class to a building block (Entity/Value Object/Service/...).<br></div>Has =
anybody ever successfully done this? Is this even possible without some &qu=
ot;GenericImplementationObject&quot; building block?<br><br></div>Thank you=
 &amp; best regards,<br></div>=C2=A0 Niklas<br></div>






<br>


<br>




<div width=3D"1" style=3D"color:white;clear:both"></div>



</blockquote></div></div>




<!-- |**|begin egp html banner|**| -->

<br>


<br>

<!-- |**|end egp html banner|**| -->


<div width=3D"1" style=3D"color: white; clear: both;"/>__._,_.___</div>

=20=20=20=20=20=20
=20=20

=20=20=20=20
    <div id=3D"fromDMARC" style=3D"clear:both; margin-top: 10px;">
         <hr style=3D"height:2px ; border-width:0; color:#E3E3E3; backgroun=
d-color:#E3E3E3;">
         Posted by: =3D?UTF-8?B?Sm/Do28gQnJhZ2Fuw6dh?=3D &lt;joao.paul.brag=
[email protected]&gt;         <hr style=3D"height:2px ; border-width:0; color:=
#E3E3E3; background-color:#E3E3E3;">
    </div>
<!-- Start Recommendations -->
<!-- End Recommendations -->



<!-- |**|begin egp html banner|**| -->

  <img src=3D"http://geo.yahoo.com/serv?s=3D97476590/grpId=3D8116923/grpspI=
d=3D1705007181/msgId=3D24785/stime=3D1471104936" width=3D"1" height=3D"1"> =
<br>

<!-- |**|end egp html banner|**| -->

=20=20
<!-- |**|begin egp html banner|**| -->

<br>



=20=20=20
=20=20=20=20=20
=20
        <!-- |**|begin egp html banner|**| -->
        <div id=3D"ygrp-vital" style=3D"background-color: #f2f2f2; font-fam=
ily: Verdana; font-size: 10px; margin-bottom: 10px; padding: 10px;">

        <span id=3D"vithd" style=3D"font-weight: bold; color: #333; text-tr=
ansform: uppercase; "><a href=3D"https://groups.yahoo.com/neo/groups/domain=
drivendesign/info;_ylc=3DX3oDMTJlZHUyZ3Y3BF9TAzk3MzU5NzE0BGdycElkAzgxMTY5Mj=
MEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTQ3MTEwNDkzNg--"=
 style=3D"text-decoration: none;">Visit Your Group</a></span>

     <ul style=3D"list-style-type: none; margin: 0; padding: 0; display: in=
line;">
            <li style=3D"border-right: 1px solid #000; font-weight: 700; di=
splay: inline; padding: 0 5px; margin-left: 0;">
      <span class=3D"cat"><a href=3D"https://groups.yahoo.com/neo/groups/do=
maindrivendesign/members/all;_ylc=3DX3oDMTJmc2hxMHB1BF9TAzk3MzU5NzE0BGdycEl=
kAzgxMTY5MjMEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwN2dGwEc2xrA3ZtYnJzBHN0aW1lAzE0Nz=
ExMDQ5MzY-" style=3D"text-decoration: none;">New Members</a></span>
      <span class=3D"ct" style=3D"color: #ff7900;">2</span>
    </li>
                                              </ul>
  </div>


<div id=3D"ft" style=3D"font-family: Arial; font-size: 11px; margin-top: 5p=
x; padding: 0 2px 0 0; clear: both;">
  <a href=3D"https://groups.yahoo.com/neo;_ylc=3DX3oDMTJkb2prY2E1BF9TAzk3ND=
c2NTkwBGdycElkAzgxMTY5MjMEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwNmdHIEc2xrA2dmcARzd=
GltZQMxNDcxMTA0OTM2" style=3D"float: left;"><img src=3D"http://l.yimg.com/r=
u/static/images/yg/img/email/new_logo/logo-groups-137x15.png" height=3D"15"=
 width=3D"137" alt=3D"Yahoo! Groups" style=3D"border: 0;"/></a>
  <div style=3D"color: #747575; float: right;"> &bull; <a href=3D"https://i=
nfo.yahoo.com/privacy/us/yahoo/groups/details.html" style=3D"text-decoratio=
n: none;">Privacy</a> &bull; <a href=3D"mailto:domaindrivendesign-unsubscri=
[email protected]?subject=3DUnsubscribe" style=3D"text-decoration: none;">=
Unsubscribe</a> &bull; <a href=3D"https://info.yahoo.com/legal/us/yahoo/uto=
s/terms/" style=3D"text-decoration: none;">Terms of Use</a> </div>
</div>

<!-- |**|end egp html banner|**| -->

  </div> <!-- ygrp-msg -->

=20=20=20


  <br>

<!-- |**|end egp html banner|**| -->


<div style=3D"color: white; clear: both;"/>__,_._,___</div>
</body>

</html>

--001a113d7b4a08a7220539f64fdf--