JavaRush /Java blogi /Random-UZ /Java dasturchisi bilishi kerak bo'lgan o'nta ob'ektga yo'...
MaximAba
Daraja

Java dasturchisi bilishi kerak bo'lgan o'nta ob'ektga yo'naltirilgan dizayn printsipi

Guruhda nashr etilgan
Ob'ektga yo'naltirilgan dizayn (OOD) tamoyillari Java ob'ektga yo'naltirilgan dasturlashning (OOP) asosini tashkil etadi, lekin men Java dasturchilarining ko'pchiligi Singleton va Decorator naqshlari bilan ishlayotganini ko'raman . yoki "Observer" . dizayn. Albatta, OOP asoslarini o'rganish muhim : abstraktsiya, inkapsulyatsiya, polimorfizm va meros, lekin shu bilan birga, yaxshi tuzilgan va tushunarli mahsulotlarni yaratish uchun dizayn tamoyillarini bilish bir xil darajada muhimdir. Men doimo SOLID OOD tamoyillari haqida eshitmagan yoki u yoki bu dizayn printsipi beradigan afzalliklar yoki uni kodda qanday qo'llash haqida bilmagan turli darajadagi dasturchilarni, ishlab chiquvchilarni doimiy ravishda kuzataman. Xulosa qilib aytganda, yechimingizda har doim kod muvofiqligi va yaxshi dizaynga intiling. Java va OODni o'rganish uchun ajoyib misollar ochiq manba Apache va Sundir. Ular Java dasturlarida kod yozishda OOD tamoyillaridan qanday foydalanish kerakligini ko'rsatadi. JDK da naqshlardan foydalanish illyustrasiyasi: Fabrika, BorderFactory sinfidagi “zavod” naqsh , Zavod dizayn namunasi nima... , Singleton naqsh, “singleton”, Runtime RunTime sinfida , Dekorator naqsh, turli java.io sinflarida "dekorator" . Aytgancha, agar siz java kodini mashq qilishni xohlasangiz, Java API muallifining durdona asari Joshua Bloch (masalan, Effektiv Java rus tiliga tarjima qilingan ) ni o'qing. Shuningdek, OOD va naqshlar mavzusida men Head First Design Pattern, shuningdek Head First Object Oriented Analysis and Design-ni tavsiya qilaman. Ushbu kitoblar OOD tamoyillaridan foydalangan holda yaxshiroq kod yozishga yordam beradi. Garchi har qanday printsiplarni o'rganishning eng yaxshi yo'li mashq qilish va aynan shu tamoyillarni buzish oqibatlarini tushunish bo'lsa-da, ushbu maqolaning mavzusi hali foydalanmayotgan yoki tilni endigina o'rganayotgan Java dasturchilari uchun OOD tamoyillariga kirishdir. O'ylaymanki, OOD ( SOLID ) ning bayon etilgan printsiplarining har biri mohiyatini batafsil tushuntirib beradigan alohida maqolaga loyiqdir va men kelajakda harakat qilaman (bu maqolalarni yozishga - taxminan. tarjima), lekin hozircha, uni tezda bosib o'tishga tayyor bo'ling.Java dasturchisi bilishi kerak bo'lgan ob'ektga yo'naltirilgan dizaynning o'nta printsipi - 1 DRY (Не повторяйтесь) Первым принципом обозначим «не повторяйтесь», что значит, не пишите повторяющегося codeа, используйте принцип абстракции, обобщая простые вещи в одном месте. Если у вас присутствует один и тот же блок codeа более, чем в двух местах, подумайте об отдельном методе для него. Если есть константа для многоразового использования, создайте глобальную переменную с модификаторами public final. Большим преимуществом использования данного принципа является легкость дальнейшей технической поддержки. Важно также не злоупотреблять этим принципом, когда, к примеру, повторение codeа существует не для самого codeа, а для реализации функциональности. Например, когда вы проверяете OrderID и SSN, это не значит, что они идентичны or станут таковыми в будущем. Используя одинаковый code для двух разных функций or элементов, вы связываете их тесно, и когда OrderID поменяет формат, code проверки SSN перестанет работать. Имейте в виду такие связки и не комбинируйте все подряд, что использует схожий code, но на самом деле, не является связанным. Инкапсулируйте то, что меняется Одна вещь постоянна в мире программного обеспечения — изменение. Инкапсулируйте code, который в будущем будет меняться. Преимущество принципа в легкости тестирования и поддержки надлежащим образом инкапсулированного codeа. При написании программ на java следуйте, по умолчанию, правилу создания переменных и методов с модификатором доступа private, расширяя доступ шаг за шагом, от private к protected, но не public. Несколько принципов дизайна java используют инкапсуляцию, паттерн Factory — хороший пример, где code создания an objectов инкапсулирован и достаточно гибок, чтобы позже создавать новые an objectы, но без воздействия на существующий code. Открыто-закрытый принцип дизайна Классы, методы, функции должны быть открыты для расширения (новой функциональности) и закрыты для модификации. Это отличный принцип из набора SOLID, соответствующий букве «О», предотвращающий изменение протестированного и работающего codeа. Идеально, если вы добавляете новую функциональность только, когда ваш code должен тестироваться, и в этом цель этого принципа ООД. Принцип уникальной ответственности (SRP) SRP соответствует букве S в SOLID и означает, что не должно существовать более 1 причины для изменения класса, иными словами, класс должен обладать уникальной функциональностью. Если один класс java реализует 2 набора функций, их сцепление создает ситуацию, при которой изменение одного нарушит имеющееся сочетание, что потребует нового раунда тестирования во избежание сюрпризов при использовании программ. Внедрение зависимостей (DI) or принцип инверсии управления (IOC) Не просите зависимости, фреймворк вам её обеспечит. Этот принцип отлично реализован в фреймворке Spring. Прелесть принципа в том, что любой класс с внедренной зависимостью (DI, часть фреймворка Spring), легко тестировать с помощью an object-муляжа и легко поддерживать, потому что code, создающий an object, инкапсулирован в фреймворке, и не смешивается с клиентским codeом. Существует множество способов внедрять зависимости, например, используя инструментарий в byte-codeе от фреймворков аспектно-ориентированного программирования типа AspectJ or используя прокси, How в Spring. Посмотрите этот пример использования принципа DI & IOC, представляющего букву D в аббревиатуре SOLID. Предпочитайте структуру наследованию Всегда ставьте на первое место структуру, композицию, если возможно. Кто-то может спорить с этим утверждением, но я нахожу, что приоритет композиции - гораздо более гибкий подход, чем реализация через наследование. Композиция позволяет изменить поведение класса во время исполнения, задавая свойства в текущем режиме. Использование интерфейсов для создания класса, применение полиморфизма, дает нам гибкость в улучшении реализации каждый раз. Даже в книге Effective Java говорится о преимуществе композиции над наследованием. Принцип подстановки Лисков (LSP) Согласно принципу LSP, буква L в SOLID, функции, которые используют ссылки на базовые классы, должны иметь возможность использовать an objectы производных классов, не зная об этом. LSP тесно связан с принципом уникальной ответственности и принципом разделения интерфейсов. Если у базового класса больше функциональности, чем у производного, такое соотношение нарушает принцип LSP. Whatбы следовать этому принципу, производный класс or подкласс должен расширять функциональность, а не сужать её. Принцип разделения интерфейсов (ISP) Данный принцип гласит, что класс не должен внедрять интерфейс ( What такое интерфейс в Java...) , если интерфейс не используется. В основном, такое происходит, когда интерфейс многофункциональный, а класс требует только одной функциональности. Разработка интерфейсов — сложная работа, реализовав интерфейс, трудно изменить его без изменения всей реализации. Другое преимущество использования принципа ISP заключается в том, что интерфейс внедряет методы до того, How Howой-либо класс может их использовать, поэтому уникальная функциональность требует внедрения меньшего количества методов. Программирование для интерфейса, а не реализации «Всегда программируйте для интерфейса, а не реализации.» Следование этому принципу приведет вас к гибкому codeу, который сможет работать с любой новой реализацией интерфейса. Используйте переменные интерфейсного типа, qaytariladigan qiymatga ega usullar yoki parametrli usullar. Xuddi shu maslahat Effective Java va OOD kitoblarida mavjud. Delegatsiya printsipi Hamma narsani o'zingiz qilmang, ishni tegishli sinfga topshiring. Delegatsiya printsipini qo'llashning darslik misoli teng() va hashCode() usullaridan foydalanishdir. Ikki ob'ektni solishtirish uchun biz tekshirishni mijoz sinfiga qoldirmasdan, sinfga ishni o'zi bajarishiga ruxsat beramiz. Ushbu tamoyilning afzalligi shundaki, u ikki tomonlama kodlashdan qochadi va xatti-harakatni o'zgartirishni osonlashtiradi. Ob'ektga yo'naltirilgan dizaynning yuqoridagi barcha tamoyillari moslashuvchan va yaxshiroq kod yozishga yordam beradi, izchil, lekin keraksiz ulanishlarsiz. Nazariya birinchi qadamdir. Eng muhimi, ushbu OOD tamoyillari qayerda qo'llanilishini tahlil qilish qobiliyatini rivojlantirishdir. Kodingizning moslashuvchanligini xavf ostiga qo'yib, biron bir tamoyilni buzayotganingizni ko'ring. Shu bilan birga, hech narsa mukammal emas, faqat dasturlashda OOD tamoyillarini qo'llash orqali har doim muammolarni hal qilish mumkin emas. Ular, asosan, korporativ yechimlar va uzoq texnik qo'llab-quvvatlash davriga ega bo'lgan loyihalar uchun juda muhimdir.
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION