внедрение через свойство (Property Injection) — позволяет клиентам в ряде случаев переопределять некоторое поведение класса по умолчанию, если это поведение по умолчанию реализовано как локальная реализация по умолчанию (Local Default).
внедрение через метод (Method Injection) — позволяет вам предоставить зависимость потребителю, когда для каждой операции может измениться либо зависимость, либо потребитель;
Эта концепция, допускающая возможность расширения приложения без изменения существующего кода, называется принципом открытости/закрытости (Open/Closed Principle).
В проектировании программных продуктов такой способ перехода от одной реализации к другой с применением того же самого интерфейса известен как паттерн проектирования «Декоратор»5.
принципом подстановки Барбары Лисков. Он гласит, что мы должны быть в состоянии заменить одну реализацию интерфейса другой, не выводя из строя ни клиента, ни реализацию.
Когда ты ищешь в холодильнике, чем бы полакомиться, могут случиться непредвиденные и неприятные вещи. Ты можешь забыть закрыть дверь холодильника, можешь взять из него то, что не разрешают брать мама с папой. Можешь даже наткнуться на просроченные продукты. Когда в следующий раз ты чего-то захочешь, просто скажи: “Я хочу после обеда съесть что-то сладкое”. Когда ты сядешь за стол, мы дадим тебе все, что нужно».