نکته جاوا: از سفر اشیاء از شماره #002 DTO خودداری کنید

یکی از شیوه هایی که من اتخاذ کرده ام (گاهی اوقات سعی در اتخاذ) در خدماتی که من ساخته ام این است: مراقب باشید و از سفر اشیاء کلاس به خارج از لایه ای که متعلق به آن است جلوگیری کنیدبشر
من در بسیاری از تحولات کلاس ها را می بینم DTO از درخواست اشمیه پاسخ استفاده در لایه سرویس تمرین با استدلال روش ها و پاسخ ها در بازده روش.
public class PersonService {
public PersonResponse create(final PersonBody body) {
//implementação das regras
return new PersonResponse();
}
}
کلاسهای درخواست اشمیه پاسخ اساساً تعریف قراردادها (معمولاً استراحت) ورودی و خروج خدمات هستند و فقط باید در لایه باشند وب، یعنی در کنترل کنندهبشر همچنین وجود دارد DTO چه کسی بارگذاری بار منابع مسنجر (کفکا یا خرگوش) ، که به نوبه خود نیز فقط باید در لایه باشد شنوندهبشر
با این رویکرد ، من استفاده از کلاس هایی را که صدا می کنم اعمال کرده ام حوزه در هر دو مکان در روشهای خدمات: استدلال ها و بازگشت ها.
public class PersonService {
public PersonDomain create(final PersonDomain person) {
//implementação das regras
return new PersonDomain();
}
}
نامگذاری کلاس ممکن است کمی متفاوت باشد ، به عنوان مثال: شخص خلق یا ایجاد شخصبشر
de-> برای همیشه با استفاده از ساختار نقشه اگر ساختار کلاس ها بسیار مشابه یا ساختمانهای دستی بیشتر در آن جدا باشند لوبیا این سازه ها/نقشه برداری را متمرکز می کند (من معمولاً تماس می گیرم نقشه کش وقتی استفاده می کنم ساختار نقشه یا کارخانه وقتی ساخت و ساز دستی است).
public class PersonController {
private final PersonService service;
private final DomainMapper domainMapper;
private final ResponseMapper responseMapper;
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public PersonResponse create(@RequestBody final PersonBody body) {
final var domain = domainMapper.map(body);
return responseMapper.map(
service.create(domain)
);
}
}
به این ترتیب ، هر دو DTO فقط در کنترلر هستند و حداکثر به یک لایه نقشه برداری منتقل می شوند (دامنه دامنه اشمیه وابسته).
از مهمترین نکات این رویکرد: مسئولیت ها را در لایه ها حفظ کنید اشمیه استفاده مجدد از کدبشر
تاکنون فقط مسئولیت نشان داده ام.
و استفاده مجدد؟
اکنون تصور کنید که نیاز به آفرینش شخص برای آن خواهد بود پیام رسان و بار بار کمی تغییر می کند ، اما کلیه قوانین و منطق اعمال می شود.
کلاس فقط برای قرارداد مسنجر قابل ایجاد است (به عنوان مثال: بار) ، فقط یک نقشه برداری از کلاس جدید داشته باشید مبهم (ساختار نقشه یا دستی) ، و سرویس بدون تغییر روش روش استفاده مجدد می شود یا نیاز به تعریف روش دیگری در خدمت مردم که هدف را دستکاری می کند باربشر
جالب: خدمت مردم شما حتی نمی دانید که این استراحت ، پیام رسان ، صابون و غیره است … فریب لایه خدمات برنامه!
برخی از مفاهیم مانند جامد ، کد تمیز ، مسئولیت ، سازماندهی ، استاندارد سازی و غیره وجود دارد که برای این رویکرد اعمال می شود.