Java ModelViewController design pattern The MVC pattern MVC
- Slides: 31
Java Model-View-Controller design pattern
The MVC pattern • MVC stands for Model-View-Controller • The Model is the actual internal representation • The View (or a View) is a way of looking at or displaying the model • The Controller provides for user input and modification
View Model Controller
View Model Controller The Model • Most programs are supposed to do work, not just be "another pretty face" – but there are some exceptions – useful programs existed long before GUIs • The Model is the part that does the work • The Model should be independent of the GUI • Independence gives flexibility, robustness
View Model Controller The Controller • A GUI lets the user control what work the program is doing • The design of the GUI depends on the Model. . . • . . . but the Model should not depend on the GUI • Unless the Model (what the program does) is the GUI, these can always be separated • Java's controls are Buttons, Text. Fields, etc.
View Model Controller The View • The user has to be able to see, or view, what the program is doing • The Model should be independent of the View (but it can provide access methods) • The View should not display what the Controller thinks is happening
Model View Controller Combining the Controller and View • Sometimes the Controller and View are combined, especially in small programs • Combining the Controller and View is appropriate if they are very interdependent • The Model should still be independent • Never mix Model code with GUI code!
Separation of concerns • As always, you want code independence • The Model should not be contaminated with control code or display code • The View should represent the Model as it really is, not some remembered status • The Controller should talk to the Model and View, not manipulate them
The Bouncing Ball Applet • Each click of the Step button advances the ball a small amount • The step number and ball position are displayed in the status line
The Ball Applet: Model • The Ball Applet shows a ball bouncing in a window • The Model controls the motion of the ball • To know when to bounce, the Model must know the size of the window • The Model doesn’t need to know anything else about the GUI
Sample CRC index card Class Name Responsibilities. . Collaborators. .
Model • Set initial position • Move one step • No collaborators. . . • …but allow access from View
Model I class Model { final int BALL_SIZE = 20; int x. Position = 0; int y. Position = 0; int x. Limit, y. Limit; int x. Delta = 6; int y. Delta = 4; // more. . .
Model II void make. One. Step ( ) { x. Position += x. Delta; if (x. Position < 0) { x. Position = 0; x. Delta = -x. Delta; } // more. . .
Model III if (x. Position >= x. Limit) { x. Position = x. Limit; x. Delta = -x. Delta; } // still more. . .
Model IV y. Position += y. Delta; if (y. Position < 0 || y. Position >= y. Limit) { y. Delta = -y. Delta; y. Position += y. Delta; } } // end of make. One. Step method } // end of Model class
Model (repeated) Model • Set initial position • Move one step • No collaborators. . . • …but allow access from View
The Ball Applet: View • The View needs access to the ball’s state (in this case, it’s x-y location) • For a static drawing, the View doesn’t need to know anything else
View • Paint the ball • Access Model
View I class View extends Canvas { Controller controller; Model model; int step. Number = 0; // more. . .
View II public void paint (Graphics g) { g. set. Color (Color. red); g. fill. Oval (model. x. Position, model. y. Position, model. BALL_SIZE); controller. show. Status ("Step " + (step. Number++) + ", x = " + model. x. Position + ", y = " + model. y. Position); } // end paint method
View (repeated) View • Paint the ball • Access Model
The Ball Applet: Controller • The Controller tells the Model what to do • The Controller tells the View when it needs to refresh the display • The Controller doesn’t need to know the inner workings of the Model • The Controller doesn’t need to know the inner workings of the View
Controller • Create Model • Create View • Give View access to Model • Tell Model to advance • Tell View to repaint • Model • View
import java. applet. *; import java. awt. event. *; Controller I public class Controller extends Applet { Panel button. Panel = new Panel (); Button step. Button = new Button ("Step"); Model model = new Model (); View view = new View (); // more. . .
Controller II public void init () { // Lay out components set. Layout (new Border. Layout ()); button. Panel. add (step. Button); this. add (Border. Layout. SOUTH, button. Panel); this. add (Border. Layout. CENTER, view); // more. . .
Controller III // Attach actions to components step. Button. add. Action. Listener (new Action. Listener () { public void action. Performed (Action. Event event) { model. make. One. Step (); view. repaint (); }}); // more. . .
Controller IV // Tell the View about myself (Controller) and // about the Model view. model = model; view. controller = this; } // end init method // more. . .
Controller V public void start ( ) { model. x. Limit = view. get. Size ( ). width - model. BALL_SIZE; model. y. Limit = view. get. Size ( ). height - model. BALL_SIZE; repaint (); } // end of start method } // end of Controller class
Controller (repeated) Controller • Create Model • Create View • Give View access to Model • Tell Model to advance • Tell View to repaint • Model • View
The End
- Pattern mvc java
- паттерн mvc java
- Swing mvc example
- Yoshi
- Java swing mvc example
- Boundary control entity
- Strategy design pattern
- Plugin design pattern java
- Abstract factory design pattern
- State design pattern java
- Java observer design pattern
- Memento design pattern java
- Hình ảnh bộ gõ cơ thể búng tay
- Bổ thể
- Tỉ lệ cơ thể trẻ em
- Gấu đi như thế nào
- Tư thế worm breton
- Hát lên người ơi
- Các môn thể thao bắt đầu bằng tiếng bóng
- Thế nào là hệ số cao nhất
- Các châu lục và đại dương trên thế giới
- Công của trọng lực
- Trời xanh đây là của chúng ta thể thơ
- Mật thư tọa độ 5x5
- 101012 bằng
- độ dài liên kết
- Các châu lục và đại dương trên thế giới
- Thơ thất ngôn tứ tuyệt đường luật
- Quá trình desamine hóa có thể tạo ra
- Một số thể thơ truyền thống
- Cái miệng xinh xinh thế chỉ nói điều hay thôi