1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<link rel="STYLESHEET" href="howto.css" type='text/css' />
<link rel="first" href="howto.html" title='Developing applications with Kiwi' />
<link rel='last' href='about.html' title='About this document...' />
<link rel='help' href='about.html' title='About this document...' />
<link rel="next" href="node7.html" />
<link rel="prev" href="person.html" />
<link rel="parent" href="person.html" />
<link rel="next" href="node7.html" />
<meta name='aesop' content='information' />
<title>2.1 Introduction</title>
</head>
<body>
<DIV CLASS="navigation">
<div id='top-navigation-panel' xml:id='top-navigation-panel'>
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td class='online-navigation'><a rel="prev" title="2 The Kiwi FrameWork"
href="person.html"><img src='previous.png'
border='0' height='32' alt='Previous Page' width='32' /></A></td>
<td class='online-navigation'><a rel="parent" title="2 The Kiwi FrameWork"
href="person.html"><img src='up.png'
border='0' height='32' alt='Up One Level' width='32' /></A></td>
<td class='online-navigation'><a rel="next" title="2.2 The FrameWork Classes"
href="node7.html"><img src='next.png'
border='0' height='32' alt='Next Page' width='32' /></A></td>
<td align="center" width="100%">Developing applications with Kiwi</td>
<td class='online-navigation'><img src='blank.png'
border='0' height='32' alt='' width='32' /></td>
<td class='online-navigation'><img src='blank.png'
border='0' height='32' alt='' width='32' /></td>
<td class='online-navigation'><img src='blank.png'
border='0' height='32' alt='' width='32' /></td>
</tr></table>
<div class='online-navigation'>
<b class="navlabel">Previous:</b>
<a class="sectref" rel="prev" href="person.html">2 The Kiwi FrameWork</A>
<b class="navlabel">Up:</b>
<a class="sectref" rel="parent" href="person.html">2 The Kiwi FrameWork</A>
<b class="navlabel">Next:</b>
<a class="sectref" rel="next" href="node7.html">2.2 The FrameWork Classes</A>
</div>
<hr /></div>
</DIV>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000210000000000000000">
2.1 Introduction</A>
</H2>
<P>
The Kiwi framework is based loosely on two important concepts.
<P>
<OL>
<LI>The first concept is Model-View-Controller (MVC), which is an
architecture developed for Smalltalk and that has been discussed and
reused many times before (there are some references at the end of the
text if you are curious about it). I have done some study of
MVC<A NAME="tex2html1"
HREF="#foot67"><SUP>1</SUP></A> and MVC implementations in modern frameworks
(Swing and MFC both implement MVC in their own ways), and Kiwi provides
traditional Views and Controllers (V and C) as well as Delegates, which
are combined Views and Controllers (using the same name as under Swing).
<P>
</LI>
<LI>The second concept is the Proxy, which borrows somewhat from Allen
Holub's `visual proxy' concept described in his series
<em class="citetitle"><a
href="http://www.javaworld.com/javaworld/jw-07-1999/jw-07-toolbox_p.html"
title="Building user interfaces for object-oriented systems"
>Building user interfaces for object-oriented systems</a></em>. Allen's views
are quite original and gave a lot of insight into what coupling really
meant for graphical interfaces.
<P>
The visual proxy is an object that represents a model, or a certain part
of it. It is coupled to the model it represents, which isn't absurd
taking into account that it is simply a way to view and change it. In
Kiwi you use Proxies in combination with Delegates (or separate Views
and Controllers) to build forms for applications.
</LI>
</OL>
<P>
<BR><HR><H4>Footnotes</H4>
<DL>
<DT><A NAME="foot67">...
MVC</A><A
HREF="node6.html#tex2html1"><SUP>1</SUP></A></DT>
<DD> While MVC is both interesting and commonplace, I criticize
it as a generic solution to an application-level framework because it
tends to promote highly-coupled classes (it does work quite nicely as a
widget-level framework, having said that).
Of course, this doesn't mean it's not useful to many applications (or at
least parts of them).
</DD>
</DL>
<DIV CLASS="navigation">
<div class='online-navigation'>
<p></p><hr />
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td class='online-navigation'><a rel="prev" title="2 The Kiwi FrameWork"
href="person.html"><img src='previous.png'
border='0' height='32' alt='Previous Page' width='32' /></A></td>
<td class='online-navigation'><a rel="parent" title="2 The Kiwi FrameWork"
href="person.html"><img src='up.png'
border='0' height='32' alt='Up One Level' width='32' /></A></td>
<td class='online-navigation'><a rel="next" title="2.2 The FrameWork Classes"
href="node7.html"><img src='next.png'
border='0' height='32' alt='Next Page' width='32' /></A></td>
<td align="center" width="100%">Developing applications with Kiwi</td>
<td class='online-navigation'><img src='blank.png'
border='0' height='32' alt='' width='32' /></td>
<td class='online-navigation'><img src='blank.png'
border='0' height='32' alt='' width='32' /></td>
<td class='online-navigation'><img src='blank.png'
border='0' height='32' alt='' width='32' /></td>
</tr></table>
<div class='online-navigation'>
<b class="navlabel">Previous:</b>
<a class="sectref" rel="prev" href="person.html">2 The Kiwi FrameWork</A>
<b class="navlabel">Up:</b>
<a class="sectref" rel="parent" href="person.html">2 The Kiwi FrameWork</A>
<b class="navlabel">Next:</b>
<a class="sectref" rel="next" href="node7.html">2.2 The FrameWork Classes</A>
</div>
</div>
<hr />
<span class="release-info">Release 1.9.22, documentation updated on August, 2006.</span>
</DIV>
<!--End of Navigation Panel-->
</BODY>
</HTML>
|