• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            oyjpArt ACM/ICPC算法程序設計空間

            // I am new in programming, welcome to my blog
            I am oyjpart(alpc12, 四城)
            posts - 224, comments - 694, trackbacks - 0, articles - 6
            Model-View-Controller, MVC模式的目的是將自己的用戶界面邏輯從業務邏輯中分離。通過這種實現,他可以重用業務邏輯,并且阻止界面中的修改對業務邏輯造成影響。

            下面這個實例正好體現了這一點。WorkPanel中的CommandButton被控制器LoginAction監聽,控制器控制model工作,Model工作得到結果,同時JWorkPanel監聽Model的工作,在試圖上做出相應的反應。





            package oyjpart.designpattern;

            import java.beans.PropertyChangeListener;
            import java.beans.PropertyChangeSupport;

            public class Model {
                
            private PropertyChangeSupport changeSupport = new PropertyChangeSupport(
                        
            this);

                
            private String login;

                
            private boolean loginStatus;

                
            private boolean password;

                
            public Model() {
                    loginStatus 
            = false;
                }


                
            public Model(PropertyChangeSupport changeSupport, String login, boolean loginStatus, boolean password) {
                    
            super();
                    
            this.changeSupport = changeSupport;
                    
            this.login = login;
                    
            this.loginStatus = loginStatus;
                    
            this.password = password;
                }

                
                
            void login(String login, String password) {
                    
            if(isLoginStatus()) {
                        setLoginStatus(
            false);
                    }
             else {
                        setLoginStatus(
            true);
                    }

                }


                
            /* (non-Javadoc)
                 * @see java.lang.Object#hashCode()
                 
            */

                @Override
                
            public int hashCode() {
                    
            final int PRIME = 31;
                    
            int result = 1;
                    result 
            = PRIME * result + ((login == null? 0 : login.hashCode());
                    result 
            = PRIME * result + (loginStatus ? 1231 : 1237);
                    result 
            = PRIME * result + (password ? 1231 : 1237);
                    
            return result;
                }


                
            /* (non-Javadoc)
                 * @see java.lang.Object#equals(java.lang.Object)
                 
            */

                @Override
                
            public boolean equals(Object obj) {
                    
            if (this == obj)
                        
            return true;
                    
            if (!super.equals(obj))
                        
            return false;
                    
            if (getClass() != obj.getClass())
                        
            return false;
                    
            final Model other = (Model) obj;
                    
            if (login == null{
                        
            if (other.login != null)
                            
            return false;
                    }
             else if (!login.equals(other.login))
                        
            return false;
                    
            if (loginStatus != other.loginStatus)
                        
            return false;
                    
            if (password != other.password)
                        
            return false;
                    
            return true;
                }


                
            /**
                 * 
            @return the loginStatus
                 
            */

                
            public boolean isLoginStatus() {
                    
            return loginStatus;
                }


                
            /**
                 * 
            @return the password
                 
            */

                
            public boolean isPassword() {
                    
            return password;
                }


                
            /**
                 * 
            @return the login
                 
            */

                
            public String getLogin() {
                    
            return login;
                }


                
            /**
                 * 
            @param login the login to set
                 
            */

                
            public void setLogin(String login) {
                    
            this.login = login;
                }


                
            /**
                 * 
            @param loginStatus
                 *            the loginStatus to set
                 
            */

                
            public void setLoginStatus(boolean loginStatus) {
                    
            boolean old = this.loginStatus;
                    
            this.loginStatus = loginStatus;
                    changeSupport.firePropertyChange(
            "model.loginStatus", old, loginStatus);
                    
                }


                
            /**
                 * 
            @param password
                 *            the password to set
                 
            */

                
            public void setPassword(boolean password) {
                    
            this.password = password;
                }


                
            /**
                 * 
            @return the changeSupport
                 
            */

                
            public PropertyChangeSupport getChangeSupport() {
                    
            return changeSupport;
                }


                
            /**
                 * 
            @param changeSupport the changeSupport to set
                 
            */

                
            public void setChangeSupport(PropertyChangeSupport changeSupport) {
                    
            this.changeSupport = changeSupport;
                }


                
            /**
                 * 
            @param arg0
                 * 
            @see java.beans.PropertyChangeSupport#addPropertyChangeListener(java.beans.PropertyChangeListener)
                 
            */

                
            public void addPropertyChangeListener(PropertyChangeListener listener) {
                    changeSupport.addPropertyChangeListener(listener);
                }


            }

            package oyjpart.designpattern;

            import java.awt.BorderLayout;
            import java.beans.PropertyChangeEvent;
            import java.beans.PropertyChangeListener;

            import javax.swing.Action;
            import javax.swing.JButton;
            import javax.swing.JLabel;
            import javax.swing.JPanel;

            public class WorkPanel extends JPanel implements PropertyChangeListener {
                
                
            private JPanel center;
                
            private JPanel buttonPanel = new JPanel();
                
            private JLabel loginStatusLabel = new JLabel();
                
                
            public WorkPanel(JPanel center) {
                    
            super();
                    
            this.center = center;
                    init();
                }

                
                
            private void init() {
                    setLayout(
            new BorderLayout());
                    add(center, BorderLayout.CENTER);
                    add(buttonPanel, BorderLayout.SOUTH);
                    add(loginStatusLabel, BorderLayout.NORTH);
                }


                
            public void propertyChange(PropertyChangeEvent e) {
                    
            if(e.getPropertyName().equals("model.loginStatus")) {
                        Boolean status 
            = (Boolean) e.getNewValue();
                        
            if(status.booleanValue()) {
                            loginStatusLabel.setText(
            "Login was successful");
                        }
             else {
                            loginStatusLabel.setText(
            "Login Failed");
                        }

                    }

                }

                
                
            public void addButton(String name, Action action) {
                    JButton button 
            = new JButton();
                    button.setText(name);
                    button.addActionListener(action);
                    buttonPanel.add(button);
                }

                
            }



            package oyjpart.designpattern;

            import java.awt.event.ActionEvent;

            import javax.swing.AbstractAction;

            public class LoginAction extends AbstractAction {
                
            private Model model;

                
            private CenterPanel panel;

                
            public LoginAction(Model model, CenterPanel panel) {
                    
            this.model = model;
                    
            this.panel = panel;
                }


                
            public void actionPerformed(ActionEvent arg0) {
                    System.out.println(
            "Login Action : " + panel.getLogin() + " "
                            
            + panel.getPassword());
                    
                    model.login(panel.getLogin(), panel.getPassword());
                }


            }


            package oyjpart.designpattern;

            import java.awt.HeadlessException;
            import java.awt.event.WindowAdapter;
            import java.awt.event.WindowEvent;

            import javax.swing.JFrame;

            public class Application extends JFrame {
                
            private Model model;

                
            /**
                 * 
            @param model
                 * 
            @throws HeadlessException
                 
            */

                
            public Application(Model model) throws HeadlessException {
                    
            super();
                    
            this.model = model;
                
                    CenterPanel center 
            = new CenterPanel();
                    WorkPanel work 
            = new WorkPanel(center);
                    
                    work.addButton(
            "login"new LoginAction(model, center));
                    work.addButton(
            "exit"new ExitAction());
                    model.addPropertyChangeListener(work);
                    setTitle(
            "MVC Pattern Application");
                    
                    getContentPane().add(work);
                    pack();
                    show();
                    addWindowListener(
            new WindowAdapter() {
                        
            public void windowClosing(WindowEvent e) {
                            System.exit(
            0);
                        }

                    }
            );
                }

                
                
            public static void main(String[] args) {
                    Model model 
            = new Model();
                    Application app 
            = new Application(model);
                }

            }


            package oyjpart.designpattern;

            import java.awt.GridLayout;
            import javax.swing.*;

            public class CenterPanel extends JPanel {
                
            private JTextField login = new JTextField();
                
            private JTextField password = new JTextField();
                
                
            public CenterPanel() {
                    setLayout(
            new GridLayout(22));
                    add(
            new JLabel("login:"));
                    add(login);
                    add(
            new JLabel("password:"));
                    add(password);
                }


                
            public String getLogin() {
                    
            return login.getText();
                }


                
            public String getPassword() {
                    
            return password.getText();
                }

                
            }


            package oyjpart.designpattern;

            import java.awt.event.ActionEvent;

            import javax.swing.AbstractAction;
            import javax.swing.JFrame;
            import javax.swing.JOptionPane;

            public class ExitAction extends AbstractAction {

                
            public void actionPerformed(ActionEvent arg0) {
                    JFrame frame 
            = new JFrame();
                    
            int response = JOptionPane.showConfirmDialog(frame,
                            
            "Exit Application ?""Exit", JOptionPane.OK_CANCEL_OPTION);

                    
            if(JOptionPane.YES_OPTION == response) {
                        System.exit(
            0);
                    }

                }


            }

            Feedback

            # re: JAVA常用設計模式2 MVC [ Model-View-Controller ]  回復  更多評論   

            2008-01-17 13:11 by alpc62
            啊……看不懂啊……

            # re: JAVA常用設計模式2 MVC [ Model-View-Controller ]  回復  更多評論   

            2008-01-17 18:52 by oyjpart
            呃...

            # re: JAVA常用設計模式2 MVC [ Model-View-Controller ]  回復  更多評論   

            2008-07-21 17:12 by guangzhi0633@163.com
            謝謝 辛苦啦

            # re: JAVA常用設計模式2 MVC [ Model-View-Controller ]  回復  更多評論   

            2008-07-22 08:55 by oyjpart
            hehe...
            国产精品一区二区久久精品| 国产精品va久久久久久久| 亚洲欧美成人综合久久久| 国产精品久久99| 色婷婷综合久久久久中文字幕| 久久精品国产亚洲AV忘忧草18| 久久久久久久亚洲Av无码| 精品久久久久久无码中文字幕 | …久久精品99久久香蕉国产| 久久久精品久久久久久| 无遮挡粉嫩小泬久久久久久久| 国产精品无码久久四虎| 亚洲日本va中文字幕久久| 久久久精品国产Sm最大网站| 久久久久高潮毛片免费全部播放 | 久久精品一区二区国产| 久久精品中文字幕大胸| 91久久精品国产成人久久| 一本一本久久A久久综合精品| 久久午夜综合久久| 久久精品国产福利国产秒| 精品少妇人妻av无码久久| 国内精品久久久久久久久电影网| 久久性生大片免费观看性| 91视频国产91久久久| 亚洲va久久久噜噜噜久久狠狠| 亚洲伊人久久成综合人影院 | 成人久久免费网站| 亚洲精品第一综合99久久| 日韩AV毛片精品久久久| 国产成人久久777777| 久久综合九色综合97_久久久| 国产成人久久精品一区二区三区| 色诱久久久久综合网ywww| 亚洲精品无码久久一线| 无码人妻少妇久久中文字幕蜜桃| 精品国产日韩久久亚洲| 国产成人无码精品久久久性色| 久久久久久精品免费免费自慰| 久久久亚洲AV波多野结衣| 亚洲精品无码久久久久去q|