java設計模式3--單例模式(Singleton)

來源:互聯網
上載者:User

標籤:

本文地址:http://www.cnblogs.com/archimedes/p/java-singleton-pattern.html,轉載請註明源地址。

單例模式

保證一個類僅有一個執行個體,並提供一個訪問它的全域訪問點。

概述

單例模式是關於怎樣設計一個類,並使得該類只有一個執行個體的修正模式,該模式的關鍵是將類的構造方法設定為private許可權,並提供一個返回它的唯一執行個體的類方法。

適用性

1.當類只能有一個執行個體而且客戶可以從一個眾所周知的訪問點訪問它時。

2.當這個唯一執行個體應該是通過子類化可擴充的,並且客戶應該無需更改代碼就能使用一個擴充的執行個體時。

參與者

Singleton 定義一個Instance操作,允許客戶訪問它的唯一執行個體。Instance是一個類操作。 可能負責建立它自己的唯一執行個體。

單例模式的結構與使用

模式的結構中只包括一個角色:

•單件類(Singleton) 

模式的UML類圖

實戰部分

模式的結構的描述與使用 

1.單例類(Singleton): Moon.java

public class Moon {    private static Moon uniqueMoon;    double radius;    double distanceToEarth;    private Moon() {        uniqueMoon = this;        radius = 1738;        distanceToEarth = 363300;    }    public static synchronized Moon getMoon() {        if(uniqueMoon == null) {            uniqueMoon = new Moon();        }        return uniqueMoon;    }    public String show() {        String s = "月亮的半徑是" + radius + "km, 距地球是" + distanceToEarth + "km";        return s;    }}

2.應用 Application.java

import javax.swing.*;import java.awt.*;public class Application {    public static void main(String[] args) {        MyFrame f1 = new MyFrame("張三看月亮");        MyFrame f2 = new MyFrame("李四看月亮");        f1.setBounds(10, 10, 360, 150);        f2.setBounds(370, 10, 360, 150);        f1.validate();        f2.validate();    }}class MyFrame extends JFrame {    String str;    MyFrame(String title) {        setTitle(title);        Moon moon = Moon.getMoon();        str = moon.show();        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);        setVisible(true);        repaint();    }    public void paint(Graphics g) {        super.paint(g);        g.setFont(new Font("宋體", Font.BOLD, 14));        g.drawString(str, 5, 100);    }}
單例模式的優點

單件類的唯一執行個體由單件類本身來控制,所以可以很好地控制使用者何時訪問它。

java設計模式3--單例模式(Singleton)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.