<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _define_array_view(data_type):
 """Define a new view object for a `Array` type."""

    element_type = data_type.element_type
    element_view = _resolve_view(element_type)
    if element_view is None:
        mixins = (_DirectArrayViewMixin,)
        attributes = _get_mixin_attributes(mixins)
    elif isinstance(element_type, _ATOMIC):
        mixins = (_IndirectAtomicArrayViewMixin,)
        attributes = _get_mixin_attributes(mixins)
        attributes.update({
            '_element_view': element_view,
        })
    else:
        mixins = (_IndirectCompositeArrayViewMixin,)
        attributes = _get_mixin_attributes(mixins)
        attributes.update({
            '_element_view': element_view,
        })

    name = data_type.name if data_type.name else 'ArrayView'
    return type(name, (), attributes)