Другой полезный метод - сделать так, чтобы публичная реализация метода возвращала значение, которое является более конкретным, чем указано в интерфейсе.
Например, объект может реализовать ICloneable
, но при этом его публично видимый метод Clone
возвращает свой собственный тип.
Аналогично, IAutomobileFactory
может иметь метод Manufacture
, который возвращает Automobile
, но FordExplorerFactory
, который реализует IAutomobileFactory
, может иметь свой метод Manufacture
, возвращающий FordExplorer
(что происходит от Automobile
).Код, который знает, что у него есть FordExplorerFactory
, мог бы использовать FordExplorer
-специфические свойства объекта, возвращаемого FordExplorerFactory
, без необходимости типизировать, тогда как код, который просто знал, что у него был какой-то тип IAutomobileFactory
, просто имел бы дело сего возвращение как Automobile
.