Использует ли Java instanceOf, совместимый с «программой для принцип дизайна интерфейса?

Как вы знаете, принцип проектирования «программа для интерфейса» в целом предпочитает супертипы, а не конкретные типы или реализации.

Согласуется ли это с принципом использования instanceof в программе на Java для получения конкретного типа от супертипа?

В моем приложении Storehouse представляет собой абстрактный класс супертипа с парой частных переменных и общедоступными геттерами и сеттерами.

ConcreteStorehouseA наследуется от Storehouse и имеет множество конкретных методов и переменных. ConcreteStorehouseB аналогичен, но отличается.

Мое приложение получает хранилище. Однако хранилище не является полезным типом для работы. Поскольку единственные действительно полезные методы содержатся в конкретных типах, я использую instanceof следующим образом:

if (storehouse instanceof ConcreteStorehouseA) {
    ConcreteStorehouseA concreteStorehouseA = (ConcreteStorehouseA) storehouse;
    // perform operations on the concrete type's useful methods and variables

Совместимо ли использование instanceof с этим принципом?

Изменить:

По сути, приложение представляет собой симулятор игры в кости для настольной RPG Shadowrun. Конкретные типы - это разные типы тестов - Успешный тест, Противоположный тест, Расширенный тест - все они имеют очень разные факторы и параметры для их успешной работы. Супертип по существу содержит пул игральных костей!

8
задан Arvanem 11 February 2011 в 21:40
поделиться