Base: New class AbstraceServiceContainerAware and interface class
Avoid use newInstanceXxx() method, use getXxx() instead

When using newInstanceXxx() method, it need to use __get() magic function,
which is not OOP and hard for migration. Use getXxx() is better for make
variable local, and easy for extend and test.