esase, не совсем так.
Интерфейс нужно применять тогда, когда нам надо знать, что это нечто умеет. Скажем, HtmlTemplate может уметь какой-нибудь addStylesheet() и addJavascript(), но модели это неинтересно - ей все равно, это html-шаблон, или pdf-шаблон, или plain-text шаблон для почтовой рассылки.
Или, скажем, у нас есть сериализатор объектов (например, в json, или там в msgpack). В этом случае NewsModel, например, может реализовать SerializeableInterface с методами exportToArray() и restoreFromArray() - и сериализатор будет интересоваться только наличием этого интерфейса, на все остальное ему по барабану.
В таких случаях сразу понятно, что, если даже у нас есть в данный момент надо сериализовывать только NewsModel, писать сериализатор, который будет принимать только NewsModel, смысла нет никакого.
Смысл в том, чтобы мыслить интерфейсами, помнить о SRP и низкой связанности. Иначе можно в том случае, когда на данный момент надо делать сериализацию только NewsModel, написать говнокод - запихнуть сериализацию внутрь NewsModel, или написать класс, который берет NewsModel и сам из нее достает $newsModel->title и т.д. (Нет, все время от времени по объективным причинам пишут подобный говнокод, но надо понимать, что это - говнокод, и он создает технический долг, который потом придется отдавать).