Knowledge

Model–view–controller

Source 📝

2670: 2660: 237:) put forward a similar "model template view" (MTV) take on the pattern, in which a view retrieves data from models and passes it to templates for display. Both Rails and Django debuted with a strong emphasis on rapid deployment, which increased MVC's popularity outside the traditional enterprise environment in which it has long been popular. 112:
the user interface that lays out and coordinates multiple Views on the screen, and which receives user input and sends the appropriate messages to its underlying Views. This design also includes an Editor as a specialized kind of controller used to modify a particular view, and which is created through that view.
336:", which maps the request to a specific method of a specific controller. Within that method, the controller interacts with the request data and any relevant model objects and prepares a response using a view. Conventionally, each view has an associated controller; for example, if the application had a 319:
A Smalltalk-80 controller handles user input events, such as button presses or mouse movement. At any given time, each controller has one associated view and model, although one model object may hear from many different controllers. Only one controller, the "active" controller, receives user input at
299:
templates, so in their scheme a view specifies an in-browser user interface rather than representing a user interface widget directly. (Django opts to call this kind of object a "template" in light of this.) This approach puts relatively less emphasis on small, composable views; a typical Rails view
287:
In Smalltalk-80, a view is just a visual representation of a model, and does not handle user input. With WebObjects, a view represents a complete user interface element such as a menu or button, and does receive input from the user. In both Smalltalk-80 and WebObjects, however, views are meant to be
111:
In their final design, a model represents some part of the program purely and intuitively. A view is a visual representation of a model, retrieving data from the model to display to the user and passing requests back and forth between the user and the model. A controller is an organizational part of
163:
and methodology" for Smalltalk-80 developers. However, their scheme differed from both Reenskaug et al.'s and that presented by the Smalltalk-80 reference books. They defined a view as covering any graphical concern, with a controller being a more abstract, generally invisible object that receives
221:, which presented MVC as a pattern where an "input controller" receives a request, sends the appropriate messages to a model object, takes a response from the model object, and passes the response to the appropriate view for display. This is close to the approach taken by the 307:
Smalltalk-80 views communicate with both a model and a controller, whereas with WebObjects, a view talks only to a controller, which then talks to a model. With Rails and Django, a view/template is used by a controller/view when preparing a response to the client.
328:
In WebObjects, the views handle user input, and the controller mediates between the views and the models. There may be only one controller per application, or one controller per window. Much of the application-specific logic is found in the controller.
1245:
In Rails, web requests are handled by action controller and action view. Typically, action controller is concerned with communicating with the database and performing CRUD actions where necessary. Action View is then responsible for compiling the
260:, independent of the user interface. It directly manages the data, logic and rules of the application. In Smalltalk-80, the design of a model type is left entirely to the programmer. With WebObjects, Rails, and Django, a model type typically 1261: 1128: 823: 324:
object is responsible for setting the current active controller. If user input prompts a change in a model, the controller will signal the model to change, but the model is then responsible for telling its views to update.
374:
As with other software patterns, MVC expresses the "core of the solution" to a problem while allowing it to be adapted for each system. Particular MVC designs can vary significantly from the traditional description here.
347:
Django calls the object playing this role a "view" instead of a controller. A Django view is a function that receives a web request and returns a web response. It may use templates to create the response.
1453:: "Since the origin of MVC, there have been many interpretations of the pattern. The concept has been adapted and applied in very different ways to a wide variety of systems and architectures." 370:
The controller responds to the user input and performs interactions on the data model objects. The controller receives the input, optionally validates it and then passes the input to the model.
78:
One of the seminal insights in the early development of graphical user interfaces, MVC became one of the first approaches to describe and implement software constructs in terms of their
1353: 1207: 1050: 998: 886: 620:
Burbeck (1992): "... the user input, the modeling of the external world, and the visual feedback to the user are explicitly separated and handled by three types of object."
396:
Trygve Reenskaug, originator of MVC at PARC, has written that "MVC was conceived as a general solution to the problem of users controlling a large and complex data set."
387:
wrote in 2003, the original motivation behind the MVC was to allow creation of a graphical interface for any object. That was outlined in detail in Richard Pawson's book
477:(or other document) from the view; the model exists entirely on the server. Later frameworks have allowed the MVC components to execute partly on the client, using 2205: 1262:"Django FAQ: Django appears to be a MVC framework, but you call the Controller the "view", and the View the "template". How come you don't use the standard names?" 1129:"Django FAQ: Django appears to be a MVC framework, but you call the Controller the "view", and the View the "template". How come you don't use the standard names?" 824:"Django FAQ: Django appears to be a MVC framework, but you call the Controller the "view", and the View the "template". How come you don't use the standard names?" 202:(that borrowed heavily from Smalltalk) and helped enforce MVC principles. Later, the MVC pattern became popular with Java developers when WebObjects was ported to 150:. The Smalltalk-80 environment also includes an "MVC Inspector", a development tool for viewing the structure of a given model, view, and controller side-by-side. 268:. The model is essential for keeping the data organized and consistent. It ensures that the application's data behaves according to the defined rules and logic. 1314:
The controller is responsible for interfacing between the user and the model/view. It interprets keyboard characters along with mouse movements and clicking.
2695: 777: 2674: 1116:
A template contains the static parts of the desired HTML output as well as some special syntax describing how dynamic content will be inserted.
1273:
In Django, a 'view' describes which data is presented, but a view normally delegates to a template, which describes how the data is presented.
896:
In WebObjects, a model establishes and maintains a correspondence between an enterprise object class and data stored in a relational database.
2198: 1038:
permits views to be used as parts for assembly into larger units; new kinds of views can be constructed using existing views as subviews.
844: 688: 229:
view, these requests are handled by a controller on the server, and the controller communicates with the appropriate model objects. The
96:(PARC) in the late 1970s. He wanted a pattern that could be used to structure any program where users interact with a large, convoluted 506: 168: 1560: 536: 280:, diagram or table. Multiple views of the same information are possible, such as a bar chart for management and a tabular view for 2191: 1284: 588: 465:
approach that placed almost the entire model, view and controller logic on the server. In this approach, the client sends
2624: 2543: 2232: 732: 2085: 2700: 2110: 1503: 1337: 1307: 1188: 1031: 979: 867: 744: 716: 704: 214: 766: 155: 2329: 2058: 1883: 1682: 491: 79: 2584: 1776: 1467: 407:
computer science professors Wilf LaLonde and John Pugh described the advantages of Smalltalk-80-style MVC as:
364:
The model is responsible for managing the data of the application. It receives user input from the controller.
1906: 1553: 261: 234: 1876: 1871: 521: 516: 180: 176: 123: 2664: 2349: 2151: 1989: 301: 203: 1766: 511: 457:
vary in their interpretations, mainly in the way that the MVC responsibilities are divided between the
172: 70:. Popular programming languages have MVC frameworks that facilitate the implementation of the pattern. 609:
More deeply, the framework exists to separate the representation of information from user interaction.
1974: 1969: 1796: 1217:
Acting as a mediator between Model objects and View objects in an application is a Controller object.
225:
web application framework (August 2004), which has the client send requests to the server via an in-
2410: 2014: 1979: 1946: 1596: 1546: 63: 344:
controller as well. However, developers are free to make other kinds of controllers if they wish.
146:
is also coupled to a model object, but the structure of that object is left up to the application
1916: 1888: 1826: 1811: 1791: 1727: 1569: 631: 501: 458: 357: 356:
In addition to dividing the application into a model, a view and a controller component, the MVC
27: 1893: 1821: 1771: 1606: 1008:
View objects represent things visible on the user interface (windows, for example, or buttons).
541: 526: 425: 230: 34:
that divides the related program logic into three interconnected elements. These elements are:
2482: 2172: 2075: 1921: 1901: 1846: 778:
A Description of the Model–View–Controller User Interface Paradigm in the Smalltalk-80 System
2659: 675: 2653: 1984: 1941: 1936: 1926: 1836: 1400: 1372: 1229: 1149: 1072: 908: 446: 160: 105: 1100: 940: 8: 2502: 2442: 2307: 2259: 2024: 2009: 2004: 1861: 1746: 1692: 567: 404: 762:"A cookbook for using the model–view controller user interface paradigm in Smalltalk-80" 332:
In Rails, requests arriving at the on-server application from the client are sent to a "
115:
Smalltalk-80 supports a version of MVC that evolved from this one. It provides abstract
2453: 2423: 2383: 2146: 2125: 2034: 1931: 1781: 1674: 1626: 1588: 478: 454: 411:
independence of presentation and data, e.g. multiple views on one model simultaneously,
333: 1060:
View objects tend to be very reusable and so provide consistency between applications.
2253: 1816: 1659: 1649: 1644: 1616: 1611: 1499: 1333: 1303: 1184: 1027: 975: 863: 740: 712: 654: 2619: 2604: 2538: 2447: 2322: 2115: 1856: 1801: 1722: 1712: 1702: 1697: 1285:
Simple Example of MVC (Model–View–Controller) Architectural Pattern for Abstraction
546: 531: 496: 438: 207: 85: 596: 2599: 2392: 2380: 2247: 2183: 2105: 2051: 2029: 1806: 1761: 1732: 1707: 1687: 1634: 1601: 1577: 1493: 1327: 1297: 1178: 1021: 969: 857: 187: 127: 67: 1088:
Action View templates are written using embedded Ruby in tags mingled with HTML.
761: 126:
as well as various concrete subclasses of each that represent different generic
2515: 2497: 2090: 1951: 1654: 1639: 845:
Applications Programming in Smalltalk-80:How to use Model–View–Controller (MVC)
442: 321: 257: 108:, he and the rest of the group settled on model, view, and controller instead. 93: 31: 1388:
Typically, the views share their name with the associated controller action...
1165:
Typically, the views share their name with the associated controller action...
789: 2689: 2614: 2265: 1911: 1756: 1717: 1664: 450: 389: 289: 222: 2594: 1526:. IEEE Enterprise Distributed Object Computing Conference. pp. 118–127. 986:
The view is responsible for providing a visual representation of the object.
414:
composable presentation widgets, e.g. one view used as a subview of another,
210:(released in October 2002), continued the strong bond between Java and MVC. 2629: 2609: 2589: 2167: 2130: 2019: 1994: 1786: 1538: 2336: 1524:
Web-Application Development Using the Model/View/Controller Design Pattern
417:
switchable input modes, by swapping one controller out for another during
2568: 2563: 2553: 2548: 2464: 2398: 2297: 2120: 2095: 2080: 1999: 1831: 462: 226: 199: 51:, the interface that presents information to and accepts it from the user 104:, view, thing, and editor. After discussing it with the other Smalltalk 2472: 2364: 473:
submissions to the controller and then receives a complete and updated
470: 281: 251: 195: 147: 256:
The central component of the pattern. It is the application's dynamic
167:
The MVC pattern subsequently evolved, giving rise to variants such as
2290: 2214: 2100: 466: 89: 687:"A note on DynaBook requirements", Trygve Reenskaug, 22 March 1979, 164:
user input and interacts with one or many views and only one model.
2558: 2436: 2356: 2223: 589:"The DCI Architecture: A New Vision of Object-Oriented Programming" 474: 384: 265: 97: 802: 580: 367:
The view renders presentation of the model in a particular format.
572: 418: 316:
Accepts input and converts it to commands for the model or view.
134:
represents some way of displaying information to the user, and a
1195:...the view knows explicitly about the model and the controller. 2275: 360:
defines the interactions between these three components :
2281: 277: 101: 40: 1215:. Cupertino, CA: Apple Computer, Inc. May 2001. p. 28. 1058:. Cupertino, CA: Apple Computer, Inc. May 2001. p. 28. 1006:. Cupertino, CA: Apple Computer, Inc. May 2001. p. 28. 894:. Cupertino, CA: Apple Computer, Inc. May 2001. p. 28. 1361:. Cupertino, CA: Apple Computer, Inc. May 2001. p. 28. 296: 191: 183:(MVVM), and others that adapted MVC to different contexts. 159:(JOT) by two ex-PARC employees presented MVC as a general " 568:"The Principles of Clean Architecture by Uncle Bob Martin" 2507: 295:
With Rails and Django, the role of the view is played by
1498:. Vol. 2. U.S.A.: Prentice-Hall Inc. pp. 8–9. 1451:
Professional Rich Internet Applications: Ajax and Beyond
956:
Generally, each model maps to a single database table.
587:
Reenskaug, Trygve; Coplien, James O. (20 March 2009).
1256: 1254: 737:
Smalltalk-80: The Interactive Programming Environment
424:
independence of input and output processing, via the
1522:
Leff, Avraham; Rayfield, James T. (September 2001).
780:" (Report), ParcPlace Systems; Retrieved 2012-06-05. 760:
Krasner, Glenn E.; Pope, Stephen T. (Aug–Sep 1988).
138:
represents some way for the user to interact with a
2213: 1251: 928:model, mapped to a products table at the database. 453:have been created that enforce the pattern. These 66:(GUIs), this pattern became popular for designing 2687: 874:The model can be any object without restriction. 725: 586: 790:The evolution of MVC and other UI architectures 709:Patterns of Enterprise Application Architecture 657:. C2.com (2012-05-11). Retrieved on 2013-12-09. 219:Patterns of Enterprise Application Architecture 671: 669: 667: 665: 663: 441:, MVC has been widely adopted as a design for 2199: 1554: 699: 697: 44:, the internal representations of information 1568: 1521: 340:view, it would typically have an associated 276:Any representation of information such as a 1491: 1325: 1295: 1176: 1019: 967: 855: 759: 660: 2206: 2192: 1561: 1547: 694: 432: 1468:"is squeak really object oriented ?" 1332:. U.S.A.: Prentice-Hall Inc. p. 11. 198:in 1996, which was originally written in 92:-79 as a visiting scientist at the Xerox 2696:Architectural pattern (computer science) 2531: 1492:LaLonde, Wilf R.; Pugh, John R. (1991). 1465: 1326:LaLonde, Wilf R.; Pugh, John R. (1991). 1302:. U.S.A.: Prentice-Hall Inc. p. 8. 1296:LaLonde, Wilf R.; Pugh, John R. (1991). 1183:. U.S.A.: Prentice-Hall Inc. p. 9. 1177:LaLonde, Wilf R.; Pugh, John R. (1991). 1026:. U.S.A.: Prentice-Hall Inc. p. 8. 1020:LaLonde, Wilf R.; Pugh, John R. (1991). 974:. U.S.A.: Prentice-Hall Inc. p. 8. 968:LaLonde, Wilf R.; Pugh, John R. (1991). 862:. U.S.A.: Prentice-Hall Inc. p. 8. 856:LaLonde, Wilf R.; Pugh, John R. (1991). 731: 1517: 1515: 678:from Trygve Reenskaug, inventor of MVC. 100:. His design initially had four parts: 2688: 1426:Pattern-Oriented Software Architecture 783: 703: 2187: 1542: 1461: 1459: 681: 206:. Later frameworks for Java, such as 1512: 1418: 753: 1431: 13: 1456: 507:Hierarchical model–view–controller 437:Although originally developed for 169:hierarchical model–view–controller 14: 2712: 629: 2669: 2668: 2658: 767:The Journal of Object Technology 537:Presentation–abstraction–control 156:The Journal of Object Technology 2059:Enterprise Integration Patterns 1534: 1485: 1443: 1393: 1365: 1346: 1319: 1289: 1278: 1222: 1200: 1170: 1142: 1121: 1093: 1065: 1043: 1013: 991: 961: 933: 901: 879: 849: 837: 816: 795: 632:"What Are The Benefits of MVC?" 502:Entity-Control-Boundary pattern 351: 190:grew after the introduction of 62:Traditionally used for desktop 58:, the software linking the two. 1472:Squeak Foundation mailing list 774:(3). SIGS Publications: 26–49. 676:Notes and Historical documents 648: 623: 614: 560: 461:. Early MVC frameworks took a 186:The use of the MVC pattern in 1: 655:Model–View–Controller History 553: 378: 311: 264:a table in the application's 240: 88:created MVC while working on 30:commonly used for developing 7: 2152:Portland Pattern Repository 1437:Gamma, Erich et al. (1994) 484: 10: 2717: 1449:Moore, Dana et al. (2007) 1355:WebObjects System Overview 1209:WebObjects System Overview 1052:WebObjects System Overview 1000:WebObjects System Overview 888:WebObjects System Overview 711:. Pearson Education, Inc. 304:with a controller action. 249: 233:framework (July 2005, for 73: 2642: 2524: 2490: 2481: 2463: 2411:Graphical user interfaces 2409: 2379: 2306: 2240: 2231: 2222: 2160: 2139: 2068: 2043: 1960: 1845: 1745: 1673: 1625: 1587: 1576: 428:of controllers and views. 426:separate responsibilities 320:any given time; a global 94:Palo Alto Research Center 64:graphical user interfaces 2701:Software design patterns 1777:Event-based asynchronous 1570:Software design patterns 1466:Alan Kay (23 May 2003). 1424:Buschmann, Frank (1996) 245: 1683:Chain of responsibility 492:Action–domain–responder 433:Use in web applications 302:one-to-one relationship 271: 153:In 1988, an article in 28:software design pattern 16:Software design pattern 1822:Scheduled-task pattern 1772:Double-checked locking 1373:"Action View Overview" 1230:"Action View Overview" 1150:"Action View Overview" 1073:"Action View Overview" 909:"Active Record Basics" 843:Burbeck, Steve (1992) 803:"Ruby on Rails Guides" 542:Separation of concerns 527:Multitier architecture 445:applications in major 2419:Model–view–controller 2173:Architectural pattern 2076:Christopher Alexander 481:to synchronize data. 447:programming languages 20:Model–view–controller 2654:Open-source software 2217:programming language 1985:Dependency injection 1942:Inversion of control 1937:Data transfer object 1837:Thread-local storage 1405:Django Documentation 1105:Django Documentation 945:Django Documentation 522:Model–view–viewmodel 517:Model–view–presenter 399:In their 1991 guide 288:general-purpose and 181:model–view–viewmodel 177:model–view–presenter 161:programming paradigm 130:. In this scheme, a 1990:Intercepting filter 924:This will create a 792:from Martin Fowler. 776:Also published as " 576:. 15 December 2015. 455:software frameworks 405:Carleton University 2147:The Hillside Group 1932:Data access object 1782:Guarded suspension 1767:Binding properties 739:. Addison-Wesley. 512:Model–view–adapter 173:model–view–adapter 2683: 2682: 2638: 2637: 2580: 2579: 2432: 2431: 2375: 2374: 2254:Dolphin Smalltalk 2181: 2180: 1975:Business delegate 1907:Publish–subscribe 1741: 1740: 459:client and server 439:desktop computing 2708: 2672: 2671: 2662: 2620:Trygve Reenskaug 2605:Mark P. McCahill 2539:L. Peter Deutsch 2529: 2528: 2488: 2487: 2344:Pocket Smalltalk 2323:Little Smalltalk 2238: 2237: 2229: 2228: 2208: 2201: 2194: 2185: 2184: 1980:Composite entity 1857:Front controller 1597:Abstract factory 1585: 1584: 1563: 1556: 1549: 1540: 1539: 1528: 1527: 1519: 1510: 1509: 1495:Inside Smalltalk 1489: 1483: 1482: 1480: 1478: 1463: 1454: 1447: 1441: 1435: 1429: 1422: 1416: 1415: 1413: 1411: 1397: 1391: 1390: 1385: 1383: 1369: 1363: 1362: 1360: 1350: 1344: 1343: 1329:Inside Smalltalk 1323: 1317: 1316: 1299:Inside Smalltalk 1293: 1287: 1282: 1276: 1275: 1270: 1268: 1258: 1249: 1248: 1242: 1240: 1226: 1220: 1219: 1214: 1204: 1198: 1197: 1180:Inside Smalltalk 1174: 1168: 1167: 1162: 1160: 1146: 1140: 1139: 1137: 1135: 1125: 1119: 1118: 1113: 1111: 1097: 1091: 1090: 1085: 1083: 1069: 1063: 1062: 1057: 1047: 1041: 1040: 1023:Inside Smalltalk 1017: 1011: 1010: 1005: 995: 989: 988: 971:Inside Smalltalk 965: 959: 958: 953: 951: 937: 931: 930: 927: 921: 919: 905: 899: 898: 893: 883: 877: 876: 859:Inside Smalltalk 853: 847: 841: 835: 834: 832: 830: 820: 814: 813: 811: 809: 799: 793: 787: 781: 775: 757: 751: 750: 729: 723: 722: 701: 692: 685: 679: 673: 658: 652: 646: 645: 643: 642: 636:Internet Alchemy 627: 621: 618: 612: 611: 606: 604: 599:on 23 March 2009 595:. Archived from 593:Artima Developer 584: 578: 577: 564: 547:Strategy pattern 532:Observer pattern 497:Bistro Framework 401:Inside Smalltalk 343: 339: 188:web applications 145: 141: 137: 133: 122: 118: 86:Trygve Reenskaug 80:responsibilities 68:web applications 2716: 2715: 2711: 2710: 2709: 2707: 2706: 2705: 2686: 2685: 2684: 2679: 2657: 2634: 2600:Julian Lombardi 2576: 2520: 2477: 2459: 2428: 2405: 2393:Croquet Project 2381:Virtual reality 2371: 2302: 2233:Implementations 2218: 2212: 2182: 2177: 2156: 2135: 2126:Douglas Schmidt 2106:Ward Cunningham 2064: 2052:Design Patterns 2039: 2030:Method chaining 1962: 1956: 1917:Service locator 1848: 1841: 1812:Read–write lock 1748: 1737: 1728:Template method 1669: 1621: 1579: 1572: 1567: 1537: 1532: 1531: 1520: 1513: 1506: 1490: 1486: 1476: 1474: 1464: 1457: 1448: 1444: 1439:Design Patterns 1436: 1432: 1423: 1419: 1409: 1407: 1401:"Writing views" 1399: 1398: 1394: 1381: 1379: 1371: 1370: 1366: 1358: 1352: 1351: 1347: 1340: 1324: 1320: 1310: 1294: 1290: 1283: 1279: 1266: 1264: 1260: 1259: 1252: 1238: 1236: 1228: 1227: 1223: 1212: 1206: 1205: 1201: 1191: 1175: 1171: 1158: 1156: 1148: 1147: 1143: 1133: 1131: 1127: 1126: 1122: 1109: 1107: 1099: 1098: 1094: 1081: 1079: 1071: 1070: 1066: 1055: 1049: 1048: 1044: 1034: 1018: 1014: 1003: 997: 996: 992: 982: 966: 962: 949: 947: 939: 938: 934: 925: 917: 915: 907: 906: 902: 891: 885: 884: 880: 870: 854: 850: 842: 838: 828: 826: 822: 821: 817: 807: 805: 801: 800: 796: 788: 784: 758: 754: 747: 733:Goldberg, Adele 730: 726: 719: 702: 695: 686: 682: 674: 661: 653: 649: 640: 638: 628: 624: 619: 615: 602: 600: 585: 581: 566: 565: 561: 556: 551: 487: 435: 381: 354: 341: 337: 314: 274: 254: 248: 243: 143: 139: 135: 131: 120: 116: 76: 32:user interfaces 17: 12: 11: 5: 2714: 2704: 2703: 2698: 2681: 2680: 2678: 2648:= discontinued 2643: 2640: 2639: 2636: 2635: 2633: 2632: 2627: 2622: 2617: 2612: 2607: 2602: 2597: 2592: 2587: 2581: 2578: 2577: 2575: 2574: 2571: 2566: 2561: 2556: 2551: 2546: 2544:Adele Goldberg 2541: 2535: 2533: 2526: 2522: 2521: 2519: 2518: 2513: 2510: 2505: 2500: 2498:Cincom Systems 2494: 2492: 2485: 2479: 2478: 2476: 2469: 2467: 2461: 2460: 2458: 2457: 2451: 2445: 2440: 2433: 2430: 2429: 2427: 2426: 2421: 2415: 2413: 2407: 2406: 2404: 2403: 2388: 2386: 2377: 2376: 2373: 2372: 2370: 2369: 2361: 2353: 2347: 2341: 2333: 2327: 2319: 2312: 2310: 2304: 2303: 2301: 2300: 2295: 2287: 2286: 2285: 2273: 2270: 2262: 2257: 2251: 2244: 2242: 2235: 2226: 2220: 2219: 2211: 2210: 2203: 2196: 2188: 2179: 2178: 2176: 2175: 2170: 2164: 2162: 2158: 2157: 2155: 2154: 2149: 2143: 2141: 2137: 2136: 2134: 2133: 2128: 2123: 2118: 2113: 2108: 2103: 2098: 2093: 2091:John Vlissides 2088: 2083: 2078: 2072: 2070: 2066: 2065: 2063: 2062: 2055: 2047: 2045: 2041: 2040: 2038: 2037: 2032: 2027: 2022: 2017: 2012: 2007: 2002: 1997: 1992: 1987: 1982: 1977: 1972: 1966: 1964: 1958: 1957: 1955: 1954: 1949: 1944: 1939: 1934: 1929: 1924: 1919: 1914: 1909: 1904: 1899: 1891: 1886: 1881: 1880: 1879: 1874: 1864: 1859: 1853: 1851: 1843: 1842: 1840: 1839: 1834: 1829: 1824: 1819: 1814: 1809: 1804: 1799: 1794: 1789: 1784: 1779: 1774: 1769: 1764: 1759: 1753: 1751: 1743: 1742: 1739: 1738: 1736: 1735: 1730: 1725: 1720: 1715: 1710: 1705: 1700: 1695: 1690: 1685: 1679: 1677: 1671: 1670: 1668: 1667: 1662: 1657: 1652: 1647: 1642: 1637: 1631: 1629: 1623: 1622: 1620: 1619: 1614: 1609: 1607:Factory method 1604: 1599: 1593: 1591: 1582: 1574: 1573: 1566: 1565: 1558: 1551: 1543: 1536: 1533: 1530: 1529: 1511: 1504: 1484: 1455: 1442: 1430: 1417: 1392: 1364: 1345: 1338: 1318: 1308: 1288: 1277: 1250: 1221: 1199: 1189: 1169: 1141: 1120: 1092: 1064: 1042: 1032: 1012: 990: 980: 960: 932: 900: 878: 868: 848: 836: 815: 794: 782: 752: 745: 724: 717: 705:Fowler, Martin 693: 680: 659: 647: 622: 613: 579: 558: 557: 555: 552: 550: 549: 544: 539: 534: 529: 524: 519: 514: 509: 504: 499: 494: 488: 486: 483: 451:web frameworks 443:World Wide Web 434: 431: 430: 429: 422: 415: 412: 380: 377: 372: 371: 368: 365: 358:design pattern 353: 350: 322:window manager 313: 310: 273: 270: 258:data structure 247: 244: 242: 239: 75: 72: 60: 59: 52: 45: 15: 9: 6: 4: 3: 2: 2713: 2702: 2699: 2697: 2694: 2693: 2691: 2677: 2676: 2667: 2666: 2661: 2656: 2655: 2650: 2649: 2646: 2641: 2631: 2628: 2626: 2623: 2621: 2618: 2616: 2615:David P. Reed 2613: 2611: 2608: 2606: 2603: 2601: 2598: 2596: 2593: 2591: 2588: 2586: 2583: 2582: 2573:Scott Wallace 2572: 2570: 2567: 2565: 2562: 2560: 2557: 2555: 2552: 2550: 2547: 2545: 2542: 2540: 2537: 2536: 2534: 2530: 2527: 2523: 2517: 2514: 2511: 2509: 2506: 2504: 2501: 2499: 2496: 2495: 2493: 2489: 2486: 2484: 2480: 2475: 2474: 2470: 2468: 2466: 2462: 2455: 2452: 2449: 2446: 2444: 2441: 2438: 2435: 2434: 2425: 2422: 2420: 2417: 2416: 2414: 2412: 2408: 2401: 2400: 2395: 2394: 2390: 2389: 2387: 2385: 2382: 2378: 2367: 2366: 2362: 2359: 2358: 2354: 2351: 2348: 2345: 2342: 2339: 2338: 2334: 2331: 2328: 2325: 2324: 2320: 2317: 2314: 2313: 2311: 2309: 2305: 2299: 2296: 2294: 2292: 2288: 2283: 2280: 2279: 2277: 2274: 2271: 2268: 2267: 2266:GNU Smalltalk 2263: 2261: 2258: 2255: 2252: 2249: 2246: 2245: 2243: 2239: 2236: 2234: 2230: 2227: 2225: 2221: 2216: 2209: 2204: 2202: 2197: 2195: 2190: 2189: 2186: 2174: 2171: 2169: 2166: 2165: 2163: 2159: 2153: 2150: 2148: 2145: 2144: 2142: 2138: 2132: 2129: 2127: 2124: 2122: 2119: 2117: 2116:Robert Martin 2114: 2112: 2111:Martin Fowler 2109: 2107: 2104: 2102: 2099: 2097: 2094: 2092: 2089: 2087: 2086:Ralph Johnson 2084: 2082: 2079: 2077: 2074: 2073: 2071: 2067: 2061: 2060: 2056: 2054: 2053: 2049: 2048: 2046: 2042: 2036: 2033: 2031: 2028: 2026: 2023: 2021: 2018: 2016: 2013: 2011: 2008: 2006: 2003: 2001: 1998: 1996: 1993: 1991: 1988: 1986: 1983: 1981: 1978: 1976: 1973: 1971: 1968: 1967: 1965: 1959: 1953: 1950: 1948: 1945: 1943: 1940: 1938: 1935: 1933: 1930: 1928: 1925: 1923: 1922:Active record 1920: 1918: 1915: 1913: 1912:Naked objects 1910: 1908: 1905: 1903: 1902:Specification 1900: 1898: 1896: 1892: 1890: 1887: 1885: 1882: 1878: 1875: 1873: 1870: 1869: 1868: 1865: 1863: 1860: 1858: 1855: 1854: 1852: 1850: 1847:Architectural 1844: 1838: 1835: 1833: 1830: 1828: 1825: 1823: 1820: 1818: 1815: 1813: 1810: 1808: 1805: 1803: 1800: 1798: 1795: 1793: 1790: 1788: 1785: 1783: 1780: 1778: 1775: 1773: 1770: 1768: 1765: 1763: 1760: 1758: 1757:Active object 1755: 1754: 1752: 1750: 1744: 1734: 1731: 1729: 1726: 1724: 1721: 1719: 1716: 1714: 1711: 1709: 1706: 1704: 1701: 1699: 1696: 1694: 1691: 1689: 1686: 1684: 1681: 1680: 1678: 1676: 1672: 1666: 1663: 1661: 1658: 1656: 1653: 1651: 1648: 1646: 1643: 1641: 1638: 1636: 1633: 1632: 1630: 1628: 1624: 1618: 1615: 1613: 1610: 1608: 1605: 1603: 1600: 1598: 1595: 1594: 1592: 1590: 1586: 1583: 1581: 1575: 1571: 1564: 1559: 1557: 1552: 1550: 1545: 1544: 1541: 1525: 1518: 1516: 1507: 1505:0-13-467309-3 1501: 1497: 1496: 1488: 1473: 1469: 1462: 1460: 1452: 1446: 1440: 1434: 1427: 1421: 1406: 1402: 1396: 1389: 1378: 1374: 1368: 1357: 1356: 1349: 1341: 1339:0-13-467309-3 1335: 1331: 1330: 1322: 1315: 1311: 1309:0-13-467309-3 1305: 1301: 1300: 1292: 1286: 1281: 1274: 1263: 1257: 1255: 1247: 1235: 1231: 1225: 1218: 1211: 1210: 1203: 1196: 1192: 1190:0-13-467309-3 1186: 1182: 1181: 1173: 1166: 1155: 1151: 1145: 1130: 1124: 1117: 1106: 1102: 1096: 1089: 1078: 1074: 1068: 1061: 1054: 1053: 1046: 1039: 1035: 1033:0-13-467309-3 1029: 1025: 1024: 1016: 1009: 1002: 1001: 994: 987: 983: 981:0-13-467309-3 977: 973: 972: 964: 957: 946: 942: 936: 929: 914: 910: 904: 897: 890: 889: 882: 875: 871: 869:0-13-467309-3 865: 861: 860: 852: 846: 840: 825: 819: 804: 798: 791: 786: 779: 773: 769: 768: 763: 756: 748: 746:0-201-11372-4 742: 738: 734: 728: 720: 718:0-321-12742-0 714: 710: 706: 700: 698: 690: 684: 677: 672: 670: 668: 666: 664: 656: 651: 637: 633: 626: 617: 610: 598: 594: 590: 583: 575: 574: 569: 563: 559: 548: 545: 543: 540: 538: 535: 533: 530: 528: 525: 523: 520: 518: 515: 513: 510: 508: 505: 503: 500: 498: 495: 493: 490: 489: 482: 480: 476: 472: 468: 464: 460: 456: 452: 448: 444: 440: 427: 423: 420: 416: 413: 410: 409: 408: 406: 402: 397: 394: 392: 391: 390:Naked Objects 386: 376: 369: 366: 363: 362: 361: 359: 349: 345: 335: 330: 326: 323: 317: 309: 305: 303: 298: 293: 291: 285: 283: 279: 269: 267: 263: 259: 253: 238: 236: 232: 228: 224: 223:Ruby on Rails 220: 216: 215:Martin Fowler 211: 209: 205: 201: 197: 193: 189: 184: 182: 178: 174: 170: 165: 162: 158: 157: 151: 149: 129: 125: 113: 109: 107: 103: 99: 95: 91: 87: 83: 81: 71: 69: 65: 57: 53: 50: 46: 43: 42: 37: 36: 35: 33: 29: 25: 21: 2673: 2663: 2651: 2647: 2644: 2630:Larry Tesler 2610:Andreas Raab 2590:Gilad Bracha 2471: 2418: 2397: 2391: 2363: 2355: 2343: 2337:OMeta/Squeak 2335: 2321: 2315: 2289: 2264: 2168:Anti-pattern 2131:Linda Rising 2057: 2050: 1995:Lazy loading 1927:Identity map 1894: 1866: 1578:Gang of Four 1535:Bibliography 1523: 1494: 1487: 1475:. Retrieved 1471: 1450: 1445: 1438: 1433: 1425: 1420: 1408:. Retrieved 1404: 1395: 1387: 1380:. Retrieved 1377:Rails Guides 1376: 1367: 1354: 1348: 1328: 1321: 1313: 1298: 1291: 1280: 1272: 1265:. Retrieved 1244: 1237:. Retrieved 1234:Rails Guides 1233: 1224: 1216: 1208: 1202: 1194: 1179: 1172: 1164: 1157:. Retrieved 1154:Rails Guides 1153: 1144: 1132:. Retrieved 1123: 1115: 1108:. Retrieved 1104: 1095: 1087: 1080:. Retrieved 1077:Rails Guides 1076: 1067: 1059: 1051: 1045: 1037: 1022: 1015: 1007: 999: 993: 985: 970: 963: 955: 948:. Retrieved 944: 935: 923: 916:. Retrieved 913:Rails Guides 912: 903: 895: 887: 881: 873: 858: 851: 839: 827:. Retrieved 818: 806:. Retrieved 797: 785: 771: 765: 755: 736: 727: 708: 683: 650: 639:. Retrieved 635: 630:Davis, Ian. 625: 616: 608: 601:. Retrieved 597:the original 592: 582: 571: 562: 469:requests or 436: 400: 398: 395: 388: 382: 373: 355: 352:Interactions 346: 331: 327: 318: 315: 306: 294: 286: 275: 255: 218: 212: 185: 166: 154: 152: 114: 110: 84: 77: 61: 55: 48: 39: 23: 19: 18: 2625:David Smith 2569:David Ungar 2564:Diana Merry 2554:Ted Kaehler 2549:Dan Ingalls 2512:Object Arts 2465:Workstation 2399:Open Cobalt 2298:VisualWorks 2272:Smalltalk/X 2140:Communities 2121:Jim Coplien 2096:Grady Booch 2081:Erich Gamma 2025:Type tunnel 2010:Object pool 2005:Null object 2000:Mock object 1862:Interceptor 1832:Thread pool 1747:Concurrency 1693:Interpreter 1410:October 27, 1382:October 27, 1267:October 27, 1239:October 27, 1159:October 27, 1134:October 27, 1110:October 27, 1101:"Templates" 1082:October 27, 950:October 27, 918:October 27, 463:thin client 282:accountants 200:Objective-C 2690:Categories 2595:Urs Hölzle 2516:Xerox PARC 2473:Xerox Alto 2443:GemStone/S 2365:Strongtalk 2260:GemStone/S 2035:Delegation 1970:Blackboard 1675:Behavioral 1627:Structural 1589:Creational 1477:26 October 689:SysReq.pdf 641:2016-11-29 554:References 449:. Several 379:Motivation 312:Controller 290:composable 262:represents 252:Data model 250:See also: 241:Components 217:published 196:WebObjects 148:programmer 136:controller 121:controller 106:developers 56:controller 2532:Designers 2483:Community 2384:platforms 2293:Smalltalk 2291:VisualAge 2215:Smalltalk 2101:Kent Beck 1827:Semaphore 1817:Scheduler 1660:Flyweight 1650:Decorator 1645:Composite 1617:Singleton 1612:Prototype 1246:response. 829:March 19, 808:March 19, 467:hyperlink 213:In 2003, 90:Smalltalk 2675:Category 2585:Lars Bak 2559:Alan Kay 2503:Gemstone 2491:Business 2437:AIDA/Web 2357:StepTalk 2330:Newspeak 2316:F-Script 2308:Dialects 2224:Software 2161:See also 1963:patterns 1849:patterns 1802:Proactor 1749:patterns 1723:Strategy 1713:Observer 1703:Mediator 1698:Iterator 1580:patterns 941:"Models" 735:(1984). 707:(2003). 603:3 August 485:See also 475:web page 385:Alan Kay 266:database 171:(HMVC), 98:data set 2645:Italics 2454:Seaside 2424:Morphic 2015:Servant 1947:Model 2 1807:Reactor 1797:Monitor 1762:Balking 1733:Visitor 1708:Memento 1688:Command 1635:Adapter 1602:Builder 926:Product 573:YouTube 419:runtime 342:Clients 227:browser 179:(MVP), 175:(MVA), 128:widgets 124:classes 74:History 26:) is a 2525:People 2276:Squeak 2069:People 1952:Broker 1655:Facade 1640:Bridge 1502:  1336:  1306:  1187:  1030:  978:  866:  743:  715:  338:client 334:router 300:has a 235:Python 231:Django 208:Spring 2448:Moose 2282:Pharo 2248:Amber 2241:Major 2044:Books 1961:Other 1897:-tier 1718:State 1665:Proxy 1359:(PDF) 1213:(PDF) 1056:(PDF) 1004:(PDF) 892:(PDF) 421:, and 278:chart 246:Model 102:Model 41:model 2665:Book 2652:° = 2396:° → 2350:Self 2020:Twin 1877:MVVM 1792:Lock 1787:Join 1500:ISBN 1479:2021 1412:2022 1384:2022 1334:ISBN 1304:ISBN 1269:2022 1241:2022 1185:ISBN 1161:2022 1136:2022 1112:2022 1084:2022 1028:ISBN 976:ISBN 952:2022 920:2022 864:ISBN 831:2022 810:2022 741:ISBN 713:ISBN 605:2019 479:Ajax 471:form 297:HTML 272:View 204:Java 192:NeXT 144:view 142:. A 140:view 132:View 119:and 117:view 54:the 49:view 47:the 38:the 2508:IBM 1889:ECS 1884:ADR 1872:MVP 1867:MVC 383:As 194:'s 24:MVC 2692:: 2278:° 1514:^ 1470:. 1458:^ 1403:. 1386:. 1375:. 1312:. 1271:. 1253:^ 1243:. 1232:. 1193:. 1163:. 1152:. 1114:. 1103:. 1086:. 1075:. 1036:. 984:. 954:. 943:. 922:. 911:. 872:. 770:. 764:. 696:^ 662:^ 634:. 607:. 591:. 570:. 403:, 393:. 292:. 284:. 82:. 2456:° 2450:° 2439:° 2402:° 2368:° 2360:° 2352:° 2346:° 2340:° 2332:° 2326:° 2318:° 2284:° 2269:° 2256:° 2250:° 2207:e 2200:t 2193:v 1895:n 1562:e 1555:t 1548:v 1508:. 1481:. 1428:. 1414:. 1342:. 1138:. 833:. 812:. 772:1 749:. 721:. 691:. 644:. 22:(

Index

software design pattern
user interfaces
model
graphical user interfaces
web applications
responsibilities
Trygve Reenskaug
Smalltalk
Palo Alto Research Center
data set
Model
developers
classes
widgets
programmer
The Journal of Object Technology
programming paradigm
hierarchical model–view–controller
model–view–adapter
model–view–presenter
model–view–viewmodel
web applications
NeXT
WebObjects
Objective-C
Java
Spring
Martin Fowler
Ruby on Rails
browser

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.