Re: DDD Implementation: Marker interfaces for all classes
"Caleb Cushing [email protected] [domaindrivendesign]" <[email protected]> Sat, 13 Aug 2016 21:52:38 +0000
| Newsgroups | gmane.comp.programming.domain-driven-design |
|---|---|
| Message-ID | <CAAHKNREjWEevpjUFn25MNr8xvb4wVk2QBzASr+-onTZo-t7MdA@mail.gmail.com> |
--001a11492ffa19038f0539fb057e Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable ok, so it's JEE what's wrong with using annotations like Spring Does? even if you're not using Spring CDI allows you to make your own annotations. Arguably marker interfaces are a mistake in java and lead to no end of issues. On Sat, Aug 13, 2016 at 4:29 PM Niklas Mehner [email protected] [domaindrivendesign] <[email protected]> wrote: > > > Thank you for all your answers, but I seem to not have put this the right > way. > > This is not about a naming convention for classes, but about marking > classes with an interface (that is not a base class but only an empty > interface like Serializable in java). > Similar to what Caleb described using the spring annotations only using > interfaces. > > With the additional requirement that each class HAS TO be assigned to a > building block. And that is the part I find problematic and wonder if > anybody has done this (successfully) in any project. > > To put this in perspective: People in this project are coming from a 4GL > background using a tool with very limited set of concepts/capabilities. T= he > new development platform is JEE. Now they are concerned that there will b= e > chaotic code structures and want to limit this by only allowing a defined > set of building blocks and no classes that do not conform to these buildi= ng > blocks. > > I don't see how this could possibly work, but wanted to know if anybody > has done anything like this before. > > I hope this explains the issue a bit better. > > 2016-08-13 18:36 GMT+02:00 Paul Rayner [email protected] > [domaindrivendesign] <[email protected]>: > >> >> >> >> >> On Sat, Aug 13, 2016 at 12:28 AM, 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? >>> >> >> Are you saying you want to have each class named according to its >> building block pattern name, or something like that? I can't think of an= y >> good reason to do this. The building block patterns are *not* the >> important concepts in your domain model, the ubiquitous language is. Foc= us >> *first* on the language of your domain model. The implementation >> patterns used to represent the concepts are secondary concerns. >> >> > > >=20 > --=20 Caleb Cushing http://xenoterracide.com --001a11492ffa19038f0539fb057e 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|**| --> <div dir=3D"ltr">ok, so it's JEE what's wrong with using annotation= s like Spring Does? even if you're not using Spring CDI allows you to m= ake your own annotations. Arguably marker interfaces are a mistake in java = and lead to no end of issues.</div><br><div class=3D"gmail_quote"><div dir= =3D"ltr">On Sat, Aug 13, 2016 at 4:29 PM Niklas Mehner <a href=3D"mailto:ni= [email protected]">[email protected]</a> [domaindrivendesign] <= ;<a href=3D"mailto:[email protected]">domaindrivendesign@y= ahoogroups.com</a>> wrote:<br></div><blockquote class=3D"gmail_quote" st= yle=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>Thank you for all your answers, b= ut I seem to not have put this the right way.<br><br></div>This is not abou= t a naming convention for classes, but about marking classes with an interf= ace (that is not a base class but only an empty interface like Serializable= in java).<br></div>Similar to what Caleb described using the spring annota= tions only using interfaces.<br><br></div>With the additional requirement t= hat each class HAS TO be assigned to a building block. And that is the part= I find problematic and wonder if anybody has done this (successfully) in a= ny project.<br><br></div>To put this in perspective: People in this project= are coming from a 4GL background using a tool with very limited set of con= cepts/capabilities. The new development platform is JEE. Now they are conce= rned that there will be chaotic code structures and want to limit this by o= nly allowing a defined set of building blocks and no classes that do not co= nform to these building blocks. <br><br></div><div>I don't see how this= could possibly work, but wanted to know if anybody has done anything like = this before.<br><br></div><div>I hope this explains the issue a bit better.= <br></div></div></div><div><div dir=3D"ltr"><div><div><div><div><br><div><d= iv><div class=3D"gmail_extra"><div class=3D"gmail_quote">2016-08-13 18:36 G= MT+02:00 Paul Rayner <a href=3D"mailto:[email protected]" target=3D"_= blank">[email protected]</a> [domaindrivendesign] <span dir=3D"ltr">&= lt;<a href=3D"mailto:[email protected]" target=3D"_blank">= [email protected]</a>></span>:<br><blockquote class=3D"= gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(20= 4,204,204);padding-left:1ex"> <u></u> =20 <div style=3D"background-color:rgb(255,255,255)"> <span>=C2=A0</span> <div> <div> <div> =20=20=20=20=20=20 =20=20=20=20=20=20 <p></p><div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class= =3D"gmail_quote"><span>On Sat, Aug 13, 2016 at 12:28 AM, Niklas Mehner <a h= ref=3D"mailto:[email protected]" target=3D"_blank">niklas.mehner@gmai= l.com</a> [domaindrivendesign] <span dir=3D"ltr"><<a href=3D"mailto:doma= [email protected]" target=3D"_blank">domaindrivendesign@yahoog= roups.com</a>></span> wrote:<br><blockquote class=3D"gmail_quote" style= =3D"border-left:1px solid rgb(204,204,204)"> <u></u> =20 <div style=3D"background-color:rgb(255,255,255)"> <span>=C2=A0</span> <div> <div> <div> =20=20=20=20=20=20 =20=20=20=20=20=20 <p></p><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 a= bout the design for a new software.<br><br></div>One of the discussion poin= ts is the use of marker interfaces.<br><br></div>I am perfectly fine with u= sing marker interfaces like:<br><br></div>SomeService implements DomainServ= ice {<br>=C2=A0=C2=A0 ...<br>}<br><br></div><div>to make the architecture v= isible in the code and implement some verification of code properties.<br><= /div><div><br></div>But now some people want to add the requirement to have= assign each class to a building block (Entity/Value Object/Service/...).<b= r></div>Has anybody ever successfully done this? Is this even possible with= out some "GenericImplementationObject" building block?<br></div><= /div></div></div></div></div></div></blockquote><div><br></div></span><div>= Are you saying you want to have each class named according to its building = block pattern name, or something like that? I can't think of any good r= eason to do this. The building block patterns are <i>not</i> the important = concepts in your domain model, the ubiquitous language is. Focus <i>first</= i> on the language of your domain model. The implementation patterns used t= o represent the concepts are secondary concerns.</div></div></div></div> <p></p> </div> =20=20=20=20=20 =20=20=20=20 <div style=3D"color:rgb(255,255,255);min-height:0px"></div> </div> =20=20 </div></div></blockquote></div><br></div></div></div></div></div></div></di= v></div></div><div><div dir=3D"ltr"></div> <br> <br> <div width=3D"1" style=3D"color:white;clear:both"></div> </blockquote></div><div dir=3D"ltr">-- <br></div><div data-smartmail=3D"gma= il_signature"><div dir=3D"ltr">Caleb Cushing<div><br></div><div><a href=3D"= http://xenoterracide.com">http://xenoterracide.com</a></div></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: Caleb Cushing <[email protected]> <= hr style=3D"height:2px ; border-width:0; color:#E3E3E3; background-color:#E= 3E3E3;"> </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=3D24789/stime=3D1471125521" 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=3DX3oDMTJlMjM0cmRoBF9TAzk3MzU5NzE0BGdycElkAzgxMTY5Mj= MEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTQ3MTEyNTUyMQ--"= 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=3DX3oDMTJmbmdzcjd1BF9TAzk3MzU5NzE0BGdycEl= kAzgxMTY5MjMEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwN2dGwEc2xrA3ZtYnJzBHN0aW1lAzE0Nz= ExMjU1MjE-" 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=3DX3oDMTJkMWNqNHRvBF9TAzk3ND= c2NTkwBGdycElkAzgxMTY5MjMEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwNmdHIEc2xrA2dmcARzd= GltZQMxNDcxMTI1NTIx" 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;"> • <a href=3D"https://i= nfo.yahoo.com/privacy/us/yahoo/groups/details.html" style=3D"text-decoratio= n: none;">Privacy</a> • <a href=3D"mailto:domaindrivendesign-unsubscri= [email protected]?subject=3DUnsubscribe" style=3D"text-decoration: none;">= Unsubscribe</a> • <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> --001a11492ffa19038f0539fb057e--