Java設計模式之單子模式應用

前不久在被問到一個問題,有關Java的界面的編程,當點擊一個按鈕時,要產生一個窗體,可是每點一次都會產生一個,由此想到了Java的設計模式之單子模式,利用單子模式很好的解決了這個問題.
單子模式就是一個類只能產生一個實例.代碼以下:
package test;
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.*;
import javax.swing.JLabel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//單子模式類
public class SingletonDemo extends JFrame {
  //一個私有的,靜態的本類對象
    private static SingletonDemo testFrame=new SingletonDemo();
    JLabel jLMes = new JLabel();
   //構造必須是私有的,這樣其它的類纔不能訪問
    private SingletonDemo() {
        getContentPane().setLayout(null);    
        this.getContentPane().add(jLMes);
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        jLMes.setText("這是產生的惟一窗體");
        jLMes.setBounds(new Rectangle(103, 53, 230, 96));     
    }
// 公有的靜態方法返回一個本類對象
    public static synchronized SingletonDemo getInstance()    {
        return testFrame;
    }
}
//測試類
class Test extends JFrame {
  
     JButton jBFrame = new JButton();
     public Test() {
        getContentPane().setLayout(null);
        jBFrame.setBounds(new Rectangle(125, 182, 118, 43));
        jBFrame.setText("單擊產生惟一窗體");
      
  this.jBFrame.addActionListener(new MyActionListener());
   this.getContentPane().add(jBFrame);
         this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        this.setSize(300,200);
        this.setVisible(true);
    }
    public static void main(String[] args) {
        Test test = new Test();
    }
   
    class MyActionListener implements ActionListener {
      //單擊按鈕時調用單子模式類的靜態方法,得到一個對象
        public void actionPerformed(ActionEvent e) {
            SingletonDemo testFrame=SingletonDemo.getInstance() ;
            testFrame.setSize(300,200);    
            testFrame.setVisible(true);           
 
        }
    }
}
建立一個單子類必須知足如下三個條件: \u001A\u0016op7yGEu&  
1.構造器私有 KBUW?I _$^  
2.提供一個私有靜態變量引用實例 8e\u0013TN=\u0015S'b  
3.提供一個共有,靜態方法得到實例. !{#
相關文章
相關標籤/搜索