Presentation–abstraction–control
![]() | This article needs attention from an expert in Computer science. Please add a reason or a talk parameter to this template to explain the issue with the article.(November 2008) |
Presentation-abstraction-control (PAC) is a software architectural pattern, somewhat similar to model-view-controller (MVC). PAC is used as a hierarchical structure of agents, each consisting of a triad of presentation, abstraction and control parts. The agents (or triads) communicate with each other only through the control part of each triad. It also differs from MVC in that within each triad, it completely insulates the presentation (view in MVC) and the abstraction (model in MVC), this provides the option to separately multithread the model and view which can give the user experience of very short program start times, as the user interface (presentation) can be shown before the abstraction has fully initialized.

Hierarchical-Model-View-Controller (HMVC)
A subset or variation of PAC under the name Hierarchical-Model-View-Controller (HMVC) was published in an article[1] in JavaWorld Magazine, the authors apparently unaware[2] of PAC which was published 13 years earlier. The main difference between HMVC and PAC is that HMVC is less strict in that it allows the view and model of each agent to communicate directly, thus bypassing the controller.
It should be noted that the Controller has some oversight. The Controller selects the Model and then selects the View, so there is an approval mechanism by the Controller. The Model prevents the View from accessing the data source directly.
See also
- Model-view-controller
- Model-view-presenter
- Model view viewmodel
- Presenter First
- PAC-Amodeus[3], [4], [5]
- PAC*
- Drupal web application framework
References
- Coutaz, Joëlle (1987). "PAC: an Implementation Model for Dialog Design". In H-J. Bullinger, B. Shackel (ed.) (ed.). Proceedings of the Interact'87 conference, September 1-4, 1987, Stuttgart, Germany. North-Holland. pp. 431–436.
{{cite conference}}
:|editor=
has generic name (help); Unknown parameter|booktitle=
ignored (|book-title=
suggested) (help) - Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal (1996). Pattern-Oriented Software Architecture Vol 1: A System of Patterns. John Wiley and Sons. pp. 145–168. ISBN 0-471-95869-7.
{{cite book}}
: CS1 maint: multiple names: authors list (link) - Gaëlle Calvary (1997). "From Single-User Architectural Design to PAC*: a Generic Software Architecture Model for CSCW". In Pemberton, Steven (ed.) (ed.). Proceedings of the ACM CHI 97 Human Factors in Computing Systems Conference. March 22-27, 1997, Atlanta, Georgia. pp. 242–249.
{{cite conference}}
:|editor=
has generic name (help); Unknown parameter|booktitle=
ignored (|book-title=
suggested) (help); Unknown parameter|coauthors=
ignored (|author=
suggested) (help) - Joëlle Coutaz (1997). "PAC-ing the Architecture of Your User Interface" (PDF). DSV-IS’97, 4th Eurographics Workshop on Design, Specification and Verification of Interactive Systems. Springer Verlag. pp. 15–32.
{{cite conference}}
: Unknown parameter|booktitle=
ignored (|book-title=
suggested) (help) - Markopoulos, Panagiotis (1997). A compositional model for the formal specification of user interface software (pdf). PhD thesis, Queen Mary and Westfield College, University of London. p. 26. Retrieved 2006-05-25.
- Paris Avgeriou (2005). "Architectural patterns revisited - a pattern language". Proceedings of 10th European Conference on Pattern Languages of Programs (EuroPlop 2005), Irsee, Germany, July 2005. pp. 1–39.
{{cite conference}}
: Unknown parameter|booktitle=
ignored (|book-title=
suggested) (help); Unknown parameter|coauthor=
ignored (|author=
suggested) (help)
External links
- Architectural outline for the game Warcraft as it might be implemented using the PAC Architectural Pattern: Programming of the application PACcraft:Architecture (in french)
- Pattern:Presentation-Abstraction-Control (pattern description)
- PAC description in the Portland Pattern Repository
- WengoPhone is a free software VoIP application that is written using the PAC design pattern.
- description of PAC and motivation for use in WengoPhone.
- demonstration code, courtesy of the OpenWengo community.
- HMVC: The layered pattern for developing strong client tiers
Notes
- ^ Jason Cai, Ranjit Kapila, and Gaurav Pal (2000). "HMVC: The layered pattern for developing strong client tiers". JavaWorld. Retrieved 2006-05-25.
{{cite journal}}
: Unknown parameter|month=
ignored (help)CS1 maint: multiple names: authors list (link) - ^ "TP" (2000). "Is HMVC PAC? (letter to the editor)". JavaWorld. Retrieved 2006-05-25.
- ^
Laurence Nigay (1991). "Building User Interfaces: Organizing Software Agents.". ESPRIT '91 Conference. Brussels, Belgium: November 1991.
{{cite conference}}
: Unknown parameter|booktitle=
ignored (|book-title=
suggested) (help); Unknown parameter|coauthor=
ignored (|author=
suggested) (help) - ^
Laurence Nigay (1994). Conception et modélisation logicielles des systèmes interactifs : application aux interfaces multimodales (PDF) (in French and with abstract in English). PhD dissertation, 315 pages, University of Grenoble, France. pp. 131–268.
{{cite book}}
: Unknown parameter|month=
ignored (help)CS1 maint: unrecognized language (link) - ^
Nigay, Laurence (1997). "Software Architecture Modelling: Bridging Two Worlds Using Ergonomics and Software Properties.". Formal Methods in Human-Computer Interaction. Springer-Verlag. chapter 3, pp. 49–73. ISBN 3-540-76158-6.
{{cite book}}
: External link in
(help); Unknown parameter|chapterurl=
|chapterurl=
ignored (|chapter-url=
suggested) (help); Unknown parameter|coauthors=
ignored (|author=
suggested) (help); Unknown parameter|nopp=
ignored (|no-pp=
suggested) (help)