Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 15843|Відповідь: 0

[Джерело] Аналіз статичних методів і одиночних патернів

[Копіювати посилання]
Опубліковано 10.10.2019 18:15:05 | | |
У програмуванні часто виникають такі плутанини: деякі функції розв'язуються за допомогою синглтонів, а деякі — статичними методами, тож які принципи та сценарії використання статичних методів і синглтонів? Давайте сьогодні прояснимо це питання.

1. Давайте спочатку розглянемо різницю між статичними та нестатичними методами?

        Багато програмістів розуміють, що статичні методи завантажуються першими, нестатичні — пізніше, статичні методи завжди існуватимуть у пам'яті, а нестатичні — ні. Тому рекомендується використовувати нестатичний метод. По-перше, неправильно наголошувати, що таке розуміння є неправильним.

        Перш за все, проаналізуємо з пам'яті: коли додаток ініціалізується, CLR (CLR — це Common Language Runtime) також є середовищем виконання, подібним до віртуальної машини Java, яке відповідає за управління ресурсами (розподіл пам'яті та збір сміття тощо) і забезпечує необхідне розділення між додатком і базовою операційною системою. CLR має дві різні назви перекладу: Common Language Runtime та Common Language Runtime. Виділяє адресний простір кожному процесу у доступному просторі процесу, який є керованою купою. Керована купа поділена на кілька регіонів, найважливішими з яких є купа збору сміття (GC Heap) та купа завантажувача (Loader Heap), яка використовується для зберігання екземплярів об'єктів і управляється GC. Найважливіша інформація, яку Loader Heap зберігає через таблицю MethodTable, — це інформація, пов'язана з метаданими, така як типи баз, статичні поля, інтерфейси реалізації та всі методи. Loader Heap не приймає контроль GC, і його життєвий цикл — від створення до знищення. Іншими словами, після завантаження класу як статичні, так і нестатичні методи цього класу зберігаються в таблиці MethodTab Load Heap без контролю GC, і всі вони зберігаються в пам'яті під час першого завантаження.

        У чому різниця між статичним методом і нестатичним? Різниця полягає в тому, що при створенні об'єкта статичний метод має лише копію, тоді як нестатичний метод копіює копію інформації про цей екземпляр у GC Heap для кожного нового нового об'єкта і одночасно розміщує новий об'єкт у стек. Адреса, на яку вказує стек-вказівник, — це адреса пам'яті, яку щойно скопійували до GC Heap. Отже, з точки зору швидкості виклику методів, статичні методи швидші, оскільки нестатичні методи потребують створення та виділення пам'яті.

З точки зору історії програмування, майже всі методи раннього структурованого програмування були статичними, а впровадження методів інстанціювання було питанням об'єктно-орієнтованого програмування, тому метод інстанціювання не мав на меті розв'язати проблему ефективності роботи та пам'яті. Це — зробити розвиток більш шаблонним і об'єктно-орієнтованим.

        З наведеного вище аналізу можна зробити висновок: 1. Статичний метод і нестатичний метод — це розрізнення між режимом розв'язання. 2. Якщо спадковість, поліморфізм або метод не має нічого спільного з об'єктом свого класу, слід обрати статичний метод, наприклад клас інструменту.        

2. У чому різниця між одиночним режимом і статичним методом?

        Іноді нам потрібно підтримувати певну інформацію в інженерії, наприклад, деякі атрибути конфігурації, які завантажуються під час виконання і мають існувати протягом усього життя застосунку і бути публічними, тому потрібна лише одна копія. Наразі ми розглянемо використання синглтонного або статичного методу для підтримки цих даних, але наразі ці дані отримуються об'єктно-орієнтовано, ми будемо використовувати синглтон.

        По-перше, статичні методи базуються на класах, а синглтони — на об'єктах. Якщо патерн роздільної здатності базується на об'єктах, використовуйте синглтон, інакше — статичний підхід. Наприклад, потрібно успадкувати класи, реалізувати інтерфейси, ініціалізувати затримки, переписувати класи батьків тощо, щоб використовувати синглтони, по-друге, статичні методи орієнтовані на процеси, а сінглтони — на об'єкти. По-третє, статичні атрибутні змінні не будуть очищені GC, тому об'єкти singleton не будуть очищені GC, а об'єкти, згенеровані статичними методами, будуть звільнені при виконанні статичного методу.




Попередній:Практика розподіленого посереднього програмного забезпечення (автор: Ні Вей) Повний китайський PDF
Наступний:Проблема з вимкненням ноутбука Dell Latitude 5501 та автоматичним увімкненням вирішено
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com