Представьте себе, если вы зашли в магазин и попросили устройство с выключателем питания.Вы не сказали, хотите ли вы копир, телевизор, пылесос, настольную лампу, вафельницу или что-то еще.Вы попросили устройство с выключателем питания.Ожидаете ли вы, что клерк предложит вам что-то, что можно описать только как «устройство с выключателем питания»?
Типичный интерфейс будет аналогичен описанию «устройство с выключателем питания».Зная, что часть оборудования является «устройством с выключателем питания», можно было бы выполнять с ним некоторые операции (т.е. включать и выключать его), и можно правдоподобно хотеть список, например, «устройств с выключателями питания, которые потребуются».быть выключенным в конце дня ", без устройств, имеющих общую характеристику, помимо наличия выключателя питания, но такие ситуации обычно применяются только при применении некоторых общих операций к устройствам, которые были созданы для какой-то более конкретной цели.Создавая что-то с нуля, можно было бы чаще использовать «копир», «телевизор», «пылесос» или другой конкретный тип устройства, чем какое-то случайное «устройство с выключателем питания».
ТамЕсть некоторые обстоятельства, когда кто-то может хотеть неопределенно определенный объект, и действительно не заботиться о том, что именно это.«Дайте мне ваше самое дешевое устройство, которое может кипятить воду».Было бы неплохо, если бы можно было указать, что, когда кто-то запрашивает произвольный объект со способностью «кипения воды», ему следует предложить электрический чайник Acme 359, и действительно, при использовании классов это можно сделать.Тем не менее, обратите внимание, что тот, кто просит «устройство для кипячения воды», получит не «устройство для кипячения воды», а «Acme 359 Electric Teakettle».