Я думаю, слайд 13 на його презентації ( Значення цінностей ) допомагає зрозуміти це:
Цінності
- Не потрібні методи
- Я можу надіслати вам значення без коду,
і ви добре
Я розумію, Хікі пропонує, що якщо мені потрібно, скажімо, подвоїти значення, яке ви мені надіслали, я просто напишу код схожий
MyValue = Double(YourValue)
Розумієте, вище код той самий, незалежно від того, яке значення ви надіслали - начебто ідеальне повторне використання .
Тепер, як це виглядатиме на мові, що має об’єкти та інтерфейси?
Doublable MyValue = YourValue.Double()
чекай! що робити, якщо YourValue
не реалізується Doublable
? не те, що його неможливо подвоїти, це може бути ідеально, але ... що робити, якщо просто немає методу Double
? (що робити, якщо існує метод, який називається сказати TwiceAsMuch
?)
О, у нас проблема. YourValue.Double
не працюватиме, його більше не можна використовувати . На моєму читанні слайду, що йдеться вище, це приблизно те, що мав на увазі Хікі, коли він сказав: "Усі ці інтерфейси вбивають ваше повторне використання!"
Розумієте, інтерфейси припускають, що об’єкти передаються навколо "разом з їх методами", а також код, який діє на них. Щоб використовувати об'єкти, потрібно зрозуміти, як викликати цей код, який метод викликати.
Коли очікуваний метод відсутній, існує проблема, хоча семантично бажана операція має ідеальний сенс для об'єкта. Як зазначено у презентації, значенням не потрібні методи ("я можу надсилати вам значення без коду, і ви добре"), що дозволяє писати код, що займається ними, в загальному вигляді.
Примітка сторони: поняття обході коди менше значень як - то мені нагадує візерунок найлегшій в об'єктно - орієнтованому програмуванні.
об’єкт, який мінімізує використання пам'яті, обмінюючись якомога більше даних з іншими подібними об'єктами; це спосіб використовувати об'єкти у великій кількості, коли просте повторне представлення використовувало б неприйнятний об'єм пам'яті ... Легкі об'єкти - це визначення об'єктів значення . Ідентичність об’єкта об'єкта не має жодного наслідку, тому два екземпляри Flyweight одного значення вважаються рівними ...
Я, як я бачив, з легкою вагою, як правило, дотримувався того ж підходу до відключення коду (методів, інтерфейсів) від об'єктів та передачі матеріалів навколо, а також без кодових значень , очікуючи, що отримання коду має засоби, необхідні для роботи з ними.
Це відчувається майже як на слайді, "значенням не потрібні методи. Я можу надсилати вам значення без коду, і ви добре".