Запитання з тегом «interfaces»

Питання щодо міркувань щодо інтерфейсу, наприклад програмування на інтерфейс.

8
Чи інтерфейс, що розкриває функцію асинхронізації, є хиткою абстракцією?
Я читаю книгу " Принципи, практики та схеми введення залежності", і читаю про концепцію непропускної абстракції, яка добре описана в книзі. Сьогодні я переробляю базу коду C #, використовуючи введення залежності, щоб виклики асинхронізації використовувались замість блокування. Таким чином я розглядаю деякі інтерфейси, які представляють абстракції в моїй кодовій базі …

5
Чи є сенс визначати інтерфейс, якщо у мене вже є абстрактний клас?
У мене є клас з деякою функцією за замовчуванням / спільним функціонуванням. Я використовую abstract classдля цього: public interface ITypeNameMapper { string Map(TypeDefinition typeDefinition); } public abstract class TypeNameMapper : ITypeNameMapper { public virtual string Map(TypeDefinition typeDefinition) { if (typeDefinition is ClassDefinition classDefinition) { return Map(classDefinition); } ... throw new …

2
UnsupportedOperationException в рамкових інтерфейсах колекцій Java
Переглядаючи рамки колекцій Java, я помітив, що досить багато інтерфейсів мають коментар (optional operation). Ці методи дозволяють реалізовувати класи, UnsupportedOperationExceptionякщо вони просто не хочуть реалізувати цей метод. Прикладом цього є addAllметод у Set Interface. Тепер, як зазначено в цій серії питань, інтерфейси є визначальним договором того, що використання може очікувати. …

3
Чи вважається інтерфейс "порожнім", якщо він успадковується від інших інтерфейсів?
Наскільки я можу сказати, порожні інтерфейси вважають поганою практикою - особливо там, де такі речі, як атрибути, підтримуються мовою. Однак чи вважається інтерфейс "порожнім", якщо він успадковується від інших інтерфейсів? interface I1 { ... } interface I2 { ... } //unrelated to I1 interface I3 : I1, I2 { // …

4
Чи погана практика використовувати інтерфейс лише для категоризації?
Наприклад: Скажімо , у мене є класи A, B, C. У мене два інтерфейси, давайте можемо їх називати IAnimalі IDog. IDogуспадковує від IAnimal. Aі Bє IDogs, хоча Cце не так, але це IAnimal. Важлива частина полягає в тому, що вона IDogне забезпечує додаткової функціональності. Він використовується лише для того, щоб …

5
Як змінюється концепція класу при передачі даних конструктору замість параметрів методу?
Скажімо, ми робимо аналізатор. Однією з реалізацій може бути: public sealed class Parser1 { public string Parse(string text) { ... } } Або ми могли замість цього передати текст конструктору: public sealed class Parser2 { public Parser2(string text) { this.text = text; } public string Parse() { ... } } …

1
Чому параметр CharSequence не містить (CharSequence)?
Це стосується обох Java SE та Android, оскільки договори однакові. Документація CharSequence для Java SE Документація CharSequence для Android CharSequenceне визначає contains(CharSequence)метод. Я не можу знайти причину, чому, в тому числі, це було б дуже корисно, запобігаючи необхідності дзвонити, CharSequence#toString()щоб перевірити послідовність символів. Наприклад, в Android користувачі змушені телефонувати, Editable#toString()щоб …

5
Окремий інтерфейс для методів мутації
Я працював над рефакторингом якогось коду, і, думаю, я зробив перший крок у кролячій норі. Я пишу приклад на Java, але, мабуть, це може бути агностиком. У мене інтерфейс Fooвизначений як public interface Foo { int getX(); int getY(); int getZ(); } І реалізація як public final class DefaultFoo implements …

9
Який дизайн OO використовувати (чи є модель дизайну)?
У мене є два об'єкти, які являють собою "Бар / Клуб" (місце, де ви п'єте / спілкуєтесь). В одному сценарії мені потрібна назва смуги, адреса, відстань, слоган В іншому випадку мені потрібна назва смуги, адреса, URL-адреса веб-сайту, логотип Отже, у мене є два об'єкти, що представляють одне і те ж, …

4
Термін "інтерфейс" в C ++
Java чітко розрізняє classта interface. (Я вважаю, що C # так само є, але я з цим не маю досвіду). Однак при написанні C ++ немає різниці між класом та інтерфейсом, що застосовується мовою. Отже, я завжди розглядав інтерфейс як вирішення проблеми відсутності багаторазового успадкування на Java. Здійснюючи таку різницю, …

3
Чим екзистенціальні типи відрізняються від інтерфейсів?
З огляду на екзистенційний тип T = ∃X.{op₁:X, op₂:X→boolean} і цей загальний інтерфейс Java: interface T<X> { X op₁(); boolean op₂(X something); } Які принципові відмінності між екзистенціальним типом та інтерфейсом Java? Очевидно, є синтаксичні відмінності та об’єктна орієнтація Java (яка також включає деталі, такі як приховані thisпараметри тощо). Я …

3
Різниця між різними інтерфейсами колекції в C #
Я вже деякий час граю з C # для розробки Windows та ASP.net MVC. Але мені все ще незрозуміло в кількох областях. Я намагаюся зрозуміти основну різницю між проблемами та продуктивністю використання та використання подібних видів інтерфейсів колекції Generic . Яка основна різниця між IEnumerable<T>, ICollection<T>, List<T>(Class)? Я, здається, використовую …

5
Модифікована схема розробки стратегії
Я нещодавно почав розглядати шаблони дизайну, і одне, що я кодую, цілком відповідала б шаблону стратегії, за винятком однієї невеликої різниці. По суті, деякі (але не всі) моїх алгоритмів потребують додаткового параметра або двох, переданих їм. Тож мені або потрібно буде передайте їм додатковий параметр, коли я викликаю їхній метод …

6
Які є вагомі причини використовувати явну реалізацію інтерфейсу з єдиною метою приховування членів?
Під час одного з моїх досліджень тонкощів C # я натрапив на цікавий уривок, що стосується явної реалізації інтерфейсу. While this syntax is quite helpful when you need to resolve name clashes, you can use explicit interface implementation simply to hide more "advanced" members from the object level. Різниця між …
11 c#  design  interfaces 

4
Чи повинен кожен клас, який я пишу, дотримуватися інтерфейсу?
Я пишу гру в Typescript, і вирішив, що я намагаюся дотримуватися ідеї " інтерфейсу на основі програмування ", де ви пишете код на основі інтерфейсу замість реалізації об'єкта. Я написав велику кількість інтерфейсів і класів, які їх реалізують, потім зробив крок назад і зрозумів, що класи досить прості, що мені, …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.