In the Rules for using dependency injection, the Magento 2 devdocs state:
Newable objects should not hold a field reference to an injectable object nor should they request one in their constructor. This is a Law of Demeter violation.
I understand that this is a good goal to have, but how is this actually possible with Magento 2 models?
If we have a look at the Customer module, which has been presented as shining example for the new architecture, the customer model constructor signature looks like this:
public function __construct( \Magento\Framework\Model\Context $context, \Magento\Framework\Registry $registry, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Eav\Model\Config $config, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Customer\Model\ResourceModel\Customer $resource, \Magento\Customer\Model\Config\Share $configShare, \Magento\Customer\Model\AddressFactory $addressFactory, \Magento\Customer\Model\ResourceModel\Address\CollectionFactory $addressesFactory, \Magento\Framework\Mail\Template\TransportBuilder $transportBuilder, GroupRepositoryInterface $groupRepository, \Magento\Framework\Encryption\EncryptorInterface $encryptor, \Magento\Framework\Stdlib\DateTime $dateTime, CustomerInterfaceFactory $customerDataFactory, DataObjectProcessor $dataObjectProcessor, \Magento\Framework\Api\DataObjectHelper $dataObjectHelper, \Magento\Customer\Api\CustomerMetadataInterface $metadataService, \Magento\Framework\Indexer\IndexerRegistry $indexerRegistry, \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null, array $data =  )
Magento\Framework\Model\Context alone, which is used by all models, takes five injectable arguments.
Apparently models, although newable, are not a good example at all for this rule.
I want to follow best practices with my own classes (not even models), but I need access to things like repositories of related entities or to the event manager. What would be the preferred way to handle this without breaking the rule from above?
I currently tend to ignore it or at best see it as friendly guideline, not as a rule.