Re: DDD Implementation: Marker interfaces for all classes
"Caleb Cushing [email protected] [domaindrivendesign]" <[email protected]> Sat, 13 Aug 2016 17:08:44 +0000
| Newsgroups | gmane.comp.programming.domain-driven-design |
|---|---|
| Message-ID | <CAAHKNRHNH5Loay75CysJ+PTaVZcSwdMhujPprMpYQLF2rgh2wg@mail.gmail.com> |
--001a11c01a90d356560539f70de7 Content-Type: text/plain; charset=UTF-8 On Sat, Aug 13, 2016 at 9:29 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 { > ... > } > Does your language have annotations? Spring does this with annotations @Controller @Service @Component The first 2 are basically aliases for @Component going on with even more @Repository component wrapped in transactions and some error intercepts @Configuration a component? that is processed before other types @Bean a component? that may not be globally available and returned from a method rather than defined as its own class I have no problem with naming classes after their pattern, sure that's secondary but in our case it seems to help our team find stuff, also if you don't it becomes harder to distinguish UserRepository from UserService UserViewModel, UserController and User as an entity.... -- Caleb Cushing http://xenoterracide.com --001a11c01a90d356560539f70de7 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"><br><br><div class=3D"gmail_quote"><div dir=3D"ltr">On Sat= , Aug 13, 2016 at 9:29 AM Niklas Mehner <a href=3D"mailto:niklas.mehner@gma= il.com">[email protected]</a> [domaindrivendesign] <<a href=3D"mai= lto:[email protected]">[email protected]<= /a>> wrote:<br></div><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>}</div></div></div></div></div></div></blockquote><div><br= ></div><div>Does your language have annotations? Spring does this with anno= tations</div><div><br></div><div>@Controller</div><div>@Service</div><div><= span style=3D"line-height:1.5">@Component=C2=A0</span><br></div><div><span = style=3D"line-height:1.5"><br></span></div><div><span style=3D"line-height:= 1.5">The first 2 are basically aliases for @Component going on with even mo= re</span></div><div><span style=3D"line-height:1.5"><br></span></div><div><= span style=3D"line-height:1.5">@Repository component wrapped in transaction= s and some error intercepts</span></div><div><span style=3D"line-height:1.5= ">@Configuration a component? that is processed before other types</span></= div><div><span style=3D"line-height:1.5">@Bean a component? that may not be= globally available and returned from a method rather than defined as its o= wn class<br><br>I have no problem with naming classes after their pattern, = sure that's secondary but in our case it seems to help our team find st= uff, also if you don't it becomes harder to distinguish UserRepository = from UserService UserViewModel, UserController and User as an entity....</s= pan></div></div></div><div dir=3D"ltr">-- <br></div><div data-smartmail=3D"= gmail_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=3D24787/stime=3D1471108136" 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=3DX3oDMTJlbXV1OTc2BF9TAzk3MzU5NzE0BGdycElkAzgxMTY5Mj= MEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTQ3MTEwODEzNg--"= 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=3DX3oDMTJmN2d0NWQ2BF9TAzk3MzU5NzE0BGdycEl= kAzgxMTY5MjMEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwN2dGwEc2xrA3ZtYnJzBHN0aW1lAzE0Nz= ExMDgxMzY-" 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=3DX3oDMTJkY2Jydm83BF9TAzk3ND= c2NTkwBGdycElkAzgxMTY5MjMEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwNmdHIEc2xrA2dmcARzd= GltZQMxNDcxMTA4MTM2" 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> --001a11c01a90d356560539f70de7--