依赖反转原则,如何确保架构的灵活性和可扩展性?