Показать сообщение отдельно
  #9 (permalink)  
Старый 09.09.2015, 01:23
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

forwardonly2015, да это само собой, просто я написал пример - как это выглядит на ES6, а не о том "треше", когда чтоб добавить новую "утку", нужно перелопатить весь код. Т.е банальное наследование.

На самом деле - мне было лень писать абстрактный класс, а потом еще утки =)

т.е

class AbstractDuck {

	constructor(name) {
		this.name = name;
	}

	// все утки умеют плавать	
	swim(name) {
		// TODO
	}
	
	// не все утки умеют летать, поэтому пусть это будет "будто" метод интерфейса
	fly() {}

	// другие общие методы
}

class Duck extends AbstractDuck {
	
	constructor(name) {
		super(name);
	}

	// а эта - умеет еще и летать.
	fly() {
		super();
		// TODO
	}

	// другие методы
}


Да и знания мои в ООП - забей ваще, допустим - "обычная утка" и "резиновая" умеют крякать, одно дело, если они крякают по разному тогда есть смысл реализовывать для них разные методы quack, но если методы идентичны, а в абстрактный класс их не вынесешь, ибо возвращаемся к тому, что "деревянная" утка будет знать о том, что знать не должна, а если реализовывать - как и задумано, т.е перегружать методы, то получится копипаст, а это тоже не ок=)

Последний раз редактировалось Lemme, 09.09.2015 в 01:27.
Ответить с цитированием