Bambino
Новичок
Абстрактный класс и интерфейс
Объясните пожалуйста разницу между этими блоками кода, с точки практической точки зрения (вроде выполняют одни и те же функции):
1.
2.
Это все применительно к некому менеджеру конфигурации, который работает с опциями приложения, хранящимися в БД. Но в будущем хочется иметь возможность хранить опции в XML или текстовых файлах. Насколько я понимаю, я должен предоставить некий интерфейс, который нужно будет реализовывать другими классами, которые будут отвечать за хранение опций в различных ипостасях. Но я порылся в коде классов Zend_Db_* и заметил, что там вовсю используется наследование абстрактных классов. Поэтому я на распутье...
Объясните пожалуйста разницу между этими блоками кода, с точки практической точки зрения (вроде выполняют одни и те же функции):
1.
PHP:
abstract class Configurator
{
abstract function addOption();
abstract function editOption();
abstract function removeOption();
}
class ConfigManager extends Configurator {
function addOption () {
// код добавления опции
}
...
}
PHP:
interface Configurator
{
function addOption();
function editOption();
function removeOption();
}
class ConfigManager implements Configurator {
function addOption () {
// код добавления опции
}
...
}
