Как заставить программиста реализовать интерфейс - PullRequest
1 голос
/ 25 октября 2011

Я создал интерфейс, имеющий все распространенные методы, которые должен иметь игрок.Я реализовал это в своем коде, мой коллега тоже.Но многие разработчики, которые не знали о моем интерфейсе, создали свои собственные методы, такие как playMyPlayer () и т. Д.

Как я могу заставить других программистов реализовать мой интерфейс?

Ответы [ 3 ]

1 голос
/ 25 октября 2011

Единственный способ сделать это - создать полезный класс, для которого требуются экземпляры объектов, реализующие ваш интерфейс:

public class UsefulClass {
    public void DoSomethingIrresistable(IPlayer player) { 
        // ... implementation here
    }
}

Любой, кому нужны вкусности, должен найти или создать класс, реализующий IPlayer.

Иначе зачем кому-то реализовывать интерфейс?Вы создаете интерфейсы, чтобы гарантировать существование определенных учеников, а не заставлять людей организовывать свои занятия так, как вы думаете, они должны быть разработаны.

1 голос
/ 28 октября 2011

Объяснение по вашему собственному сценарию :

Интерфейс

interface Player{
    public void play();
    public void pause();
    public void stop();
}

Классы, которые реализуют Player Intreface;

class AudioPlayer implements Player{...}

class VideoPlayer implements Player{...}

Какой-то дополнительный класс. Бессмысленно, но кажется уместным

Class PlayList{}

перечисление, которое играет важную роль;

enum MEDIAPLAYER {
    AUDIO,VIDEO;

    public Player getPlayer() {
        switch (this) {
            case AUDIO:
                return new AudioPlayer();
            case VIDEO:
                return new VideoPlayer();
            default:
                return new AudioPlayer();
        }
    }
}

Используя ваш код

Player testPlayer = MEDIAPLAYER.getPlayer();
:
testPlayer.play();

Теперь, если добавлен какой-либо новый игрок, его запись перейдет к MEDIAPLAYER, который возвращает объект типа Player. Так что каждый должен будет реализовать Player

Другой подход :

Вы можете создать абстрактный класс, скажем, MasterPlayer, у которого есть все абстрактные методы, которые есть у интерфейса Player. Кроме того, MasterPlayer будет иметь несколько дополнительных методов, таких как управление PlayList

0 голосов
/ 25 октября 2011

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

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

Как только у вас есть система для информирования ваших разработчиков, какие интерфейсы / примеры кода / все, что у них есть в наличии, этобудет намного легче убедиться, что они используют это.И, честно говоря, если код, который вы предоставляете, хорошо написан и поддерживает функции, которые им нужны, большинство разработчиков будет использовать его в любом случае, поскольку это спасает их работу.

Однако вы должны что-то добавить в свои стандарты кодекса поведенияповторное использование существующего кода вместо переписывания, НО вы не сможете сделать это, пока у вас не будет надежной системы для информирования разработчиков о том, какой код доступен для использования.

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