Virtual Interface Machine: a design pattern to solve the problem of coupling and efficiency in software design

In this paper, we try to tackle three relative problems in software design. The first one is the separation of user interface (UI) from logic layer. The second one is the decoupling of components of UI. The last one is how to combine high reusability design with efficiency of drag-and-drop mode of rapid application development (RAD) tools. As far as decoupling is concerned, there are many design patterns to tackle it, such as MVC (Model-View-Controller), Mediator, Observer, Visual Proxy, etc, which are not satisfying, because of the obvious disadvantage that collaborative components are actually tightly coupled by a specific object (like mediator, controller, etc). As for the last problem, many hold that drag-and-drop mode of RAD would compromise the reusability and maintainability of OO design. We use a method called drag-drop-and-add to achieve both reusability and efficiency. This paper presents a pattern called Virtual Interface Machine that let us separate UI from logic layer, decouple components of UI entirely and enjoy efficiency of RAD in UI design without compromising reusability and maintainability of the whole design. By the thorough decoupling, we could even change both logic layer and UI at run time, which is impossible to other patterns. In practice, we implemented the pattern in our Intrusion Detection System (IDS).