2009-10-12 2 views
0

В настоящее время я читаю Совершенный код и в главе, посвященный класс, автор говорит, чтоЧто означает эта статута: «Интерфейсы классов должны обеспечивать согласованную абстракцию»?

Интерфейсы класса должны обеспечивать последовательную Абстракцию

Я не в состоянии понять это утверждение правильно, и был бы признателен, если кто-то может дать объяснение с примерами и то, что относится к плюсам и минусам.

Спасибо.

+0

Предоставление некоторого контекста поможет. –

+0

@Joachim - Обобщение концепции для работы с классами в ООП – Rachel

+0

Является ли это потому, что утверждение взято из Стандартной книги по информатике, и поэтому люди не хотят комментировать ее? – Rachel

ответ

1

Представьте, что у вас есть интерфейс для взаимодействия с некоторыми хранилищами. Клиент/пользователь интерфейса должен иметь возможность хранить и извлекать объекты. Кроме того, у вас будут «виды» объектов в хранилище, а при хранении или извлечении клиент должен указать, какой объект они хранят или извлекают. Поскольку нам нравятся типы и строки abhor, они будут делать это с помощью типов. Итак:

interface ObjectStorage 
{ 
    void storeObject(object, type); 
    object retrieveObject(type); 
} 

Реализация интерфейса хотел бы указать только те типы, которые она способна обрабатывать, и поэтому определяет типы идти с реализацией интерфейса.

«Согласованная абстракция» в этом контексте означает, что абстракция интерфейса должна быть на одном уровне. Несовместимая абстракция будет определение типов реализации в интерфейсе, например, так:

interface ObjectStorage 
{ 
    void storeObject(object, FileType); 
    FileType retrieveObject(FileType); 
} 

это будет связывать любую реализацию работать исключительно с FileType с или их подтипами.

Надеюсь, что я был несколько последователен в своем ответе.

Смежные вопросы