Некоторые примеры / советы, чтобы прояснить интерфейс и полиморфизм - PullRequest
0 голосов
/ 08 марта 2011

Я читал о полиморфизме, а также об интерфейсе, но мне было сложно сразу их поймать. Я хотел бы привести пример из реальной жизни, где они были реализованы.

Было бы лучше, если это vb.net или php, так как я обычно пишу на них.

Ответы [ 2 ]

1 голос
/ 08 марта 2011

интерфейс и полиморфизм не являются специфическими для каких-либо языков, но концепции, используемые для моделирования проблемы и пространства решения.Все объектно-ориентированные языки предоставляют способ для создания или реализации кода, который близко соответствует этим концепциям.

Прежде чем посмотреть, что это такое?Давайте кратко рассмотрим, зачем они вам нужны?и как они полезны.

Простой пример интерфейса - «Автомобиль» всегда имеет один и тот же интерфейс «Разрыв, ускорение», если вы знаете, как управлять автомобилем, вы можете управлять любым автомобилем.Поэтому, если человек (решение) получает этот единый интерфейс автомобиля, независимо от марки и модели, он может управлять, поэтому вы можете управлять практически любой машиной.Таким же образом, когда вы пишете код для решения одного конкретного класса проблем, вы можете повторно использовать решение для нескольких доменов или объектов, которые предоставляют схожий интерфейс для работы.

Простой пример Полиморфизма, посмотрите на Счет (это может быть проверка или сбережение, предполагая, что каждый привлекает различные дивиденды), вы идете в банк и спрашиваете кассира, каков мой баланс?или дивиденды?вам не нужно указывать, какой у вас аккаунт, он выяснит изнутри свои книги и предоставит вам подробности.Внутренние подробности о том, как работает кассир, скрыты от вас для каждого случая (проверка и сбережения), где любой может прийти и задать вопрос и получить ответ, подходящий для данного лица.Таким образом, кассир является полиморфным (он меняет свои рабочие правила или формы), чтобы удовлетворить клиента.

Интерфейсы, как в примере с автомобилем, предоставляют контракт на работу с объектами, если вы придерживаетесь этого контракта одного набора решений.может быть применен к другому домену, если рассматриваемые интерфейсы одинаковы.Interfaces promote reuse of solutions by making them generic. Если у вас есть кредитная карта, на которой можно пить пиво, вам не нужно иметь специальную панель для каждого типа кредитной карты.

Полиморфизм, как в примере с учетной записью Teller, будет Promote reuse of interface or messages by reusing same message or interface to provide different but semantically equivalent mechanisms.Вы берете свой телефон и набираете номер, независимо от того, является ли номер назначения стационарным, мобильным или чем-то еще, здесь интерфейс набора из 10 цифр используется повторно в каждом из механизмов, которые семантически эквивалентны.

Теперь вы можете продолжить поиск некоторых интерфейсов в VB.NET или PHP, я не очень осведомлен об этих языках

Посмотрите, как элементы управления (VB.NET) реагируют нааналогичные методы, чтобы увидеть полиморфизм в действии.Для интерфейсов ищите объекты, которые реализуют IEnumerable (из ответа выше), или ISerializable и объекты, которые их реализуют.

0 голосов
/ 08 марта 2011

Ну, вы использовали интерфейсы, если когда-либо использовали цикл For Each.Компилятор знает об интерфейсе IEnumerable(Of T), поэтому он может перебирать любую последовательность , вызывая GetEnumerator() для получения IEnumerator(Of T), а затем повторно вызывая MoveNext() и Current для чтенияэлементы последовательности.Это будет работать независимо от того, используете ли вы List(Of T), LinkedList(Of T), HashSet(Of T) или что-то еще.Вы можете зависеть только от интерфейса.LINQ to Objects также основан на этом (хотя и с некоторыми конкретными оптимизациями для других типов интерфейса).

Для полиморфизма я обычно использую Stream в качестве примера.Легко написать код, который использует любой Stream и не заботится о том, действительно ли это FileStream, NetworkStream, MemoryStream или что-то еще.Реализация потока переопределит соответствующие элементы, чтобы заставить его «просто работать».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...