導航:首頁 > 編程語言 > java單態類

java單態類

發布時間:2023-03-25 18:30:58

java中單態設計模式會不會死循環呢

你難道沒注意那個new 語句是靜態的? 只有在程序載入的時候才執行一次當然不會死循環

Ⅱ 在java中用單例模式有什麼好處

單例模式主要作用是保證在Java應用程序中,一個類Class只有一個實例存在。
還有, singleton(單例)能夠被狀態化; 這樣,多個單態類在一起就可以作為一個狀態倉庫一樣向外提供服務,比如,你要論壇中的帖子計數器,每次瀏覽一次需要計數,單態類能否保持住這個計數,並且能synchronize的安全自動加1,如果你要把這個數字永久保存到資料庫,你可以在不修改單態介面的情況下方便的做到。
另外方面,Singleton也能夠被無狀態化。提供工具性質的功能,
Singleton模式就為我們提供了這樣實現的可能。使用Singleton的好處還在於可以節省內存,因為它限制了實例的個數,有利於Java垃圾回收(garbage collection)。Singleton模式看起來簡單,使用方法也很方便,但是真正用好,是非常不容易,需要對Java的類 線程 內存等概念有相當的了解。

Ⅲ java中單態模式或單例模式(Singleton)有什麼意義

8.單態模式或單例模式(Singleton)


態模式有什麼用呢?想一下Adobe Photoshop ,處理兩張圖,會啟動兩個photoshop嗎?多耗費內存呀! ( Consider
Adobe or oracle, process two images with two
adobes?),所以單態模式在公司編程是非常重要的。有很多場合都要求,對象只能存在一個,多了的話就太耗費資源。(馬克-to-win)

class Photoshop {
/* 通過調試發現寫成 static Photoshop photoshop或static Photoshop
photoshop=null;
是一樣的,開始時都為null,馬克-to-win,另外在調試時
可以寫上觀察Photoshop.photoshop的值,它是獨立於任何對象之外的,從程序開始運行的main方法時, 這個值就有了,
只不過為null罷了, 我們可以一直觀察
*/
static Photoshop photoshop;//這個值獨立於任何對象存在,實例化任何對象之前,這個成員就有可能有值。

static Photoshop getInstanceQixy() {
if (photoshop == null) {
photoshop = new Photoshop();
System.out.println("成功創建");
} else {
System.out.println("已經創建了該類的實例,不能再創建!");
}

return photoshop;
}

void drawImage() {
System.out.println("draw image using photoshop");
}
}

public class Test {
public static void main(String[] args) {
。。。。。。。。。。。。。。。。詳情網上找「馬克-to-win」,參考他的網站或他的網路空間:java第2章的內容

Ⅳ JAVA基礎編程問題th

這個程序很簡單,主要是方法的調用什麼的,其實下面的幾個老兄已經給出正確的程序了,我給你個超詳細的帶講解的程序:
class Student
{
//構造函數,可寫可不寫
public Student(){}
//聲轎戚明一個無參虛帆段方法study,輸出This is a student
public void study()
{
System.out.println("This is a student") ;
}
}

//設計一個啟動運行類TestStudent
public class TestStudent
{
public static void main(String[] args)
{
//實例化一個Student的對象,然差譽後調用它的study()方法
new Student().study();
}
}
文件保存為TestStudent.java

Ⅳ java中單態模式或單例模式(Singleton)有什麼意義

你好!
存在某些類不需要實例化多次,也就是說
該類一般沒有非靜態的成員變數,只需要在系統運行時實例化一次就可以了,所以就存在單例模式
如有疑問,請追問。

Ⅵ 編寫一個JAVA類,要求實現類的單態設計模式

package org.jdbc.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

//單例模式
public class JdbcUtilsSing {
private String url="jdbc:mysql://localhost:3306/hehe";
private String user = "root";
private String password = "k517liyu";
private static JdbcUtilsSing instance ;
//私有構造函數,不能被外部創建實例
private JdbcUtilsSing() {

}

public static JdbcUtilsSing getInstance() {
//雙重檢查,保證只會創建一個實例
if(instance == null) {
//防止2個以上的請求並發訪問
synchronized (JdbcUtilsSing.class) {
//第一個請求創建實例後,保證後面拿到鎖的請求不在創建新的實例
if(instance == null) {
instance = new JdbcUtilsSing();
}
}

}
return instance;
}
//靜態代碼塊在類載入進內存的時候就自動執行
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
throw new ExceptionInInitializerError();
}
}

//獲得連接
public Connection getConnection() throws SQLException {
return DriverManager.getConnection(url,user,password);
}

//釋放資源
public void free(ResultSet rs,Statement st,Connection conn) {
try {
if(rs != null){rs.close();}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(st != null) {st.close();}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(conn != null) {conn.close();}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}

Ⅶ 請教關於java的單態模式

從你的代碼來看只有調用getInstance()方法,才會運行System.out.println("here run init()"); 這一句吧。
就算是在properties.load(...)這一句時構造函數又載入了一次,也不會輸出"here run init()"這一句啊~
暈了~
=========================================================
編譯了下你這段代碼(稍微有點修改)
import java.util.*;

public class Test{
private static Test instance = null;
public static synchronized Test getInstance() {
if(instance==null){
System.out.println("here run init()");
instance = new Test();
}
return instance;
}

private Test() {
init();
}

private void init(){
Properties p = new Properties();
try{
p.load(Test.class.getResourceAsStream("/option.properties"));
//以下是取配置,設置初始化配置的代碼,此處略掉
}catch(Exception ioEx){
System.out.println("配置文件option.properties不存在");
}
}

public static void main(String[] args){
Test t1 = Test.getInstance();
Test t2 = Test.getInstance();
System.out.println(t1 == t2);
}
}
結果輸出:
here run init()
配置文件option.properties不存在
true
只有一次……沒什麼問題啊~
===============================================
我把文件創建了,又運行了一次,輸出:
here run init()
true
還是只有一次……沒什麼問題~
==============================================
對了
p.load(new FileInputStream("option.properties"));
這樣也可以
===============================================
我裝的 Java 6 Update 10
對了,你的電腦是雙核的嗎?
可能是雙核的原因
同步出現了問題
使對象初始化了兩次
我家的單核的……
以前在學校學線程那一塊的時候
就因為雙核的原因,有的例子老是出問題

Ⅷ java中常用的設計模式有哪些

1.單例模式(有的書上說叫單態模式其實都一樣)
該模式主要目的是使內存中保持1個對象
2.工廠模式
該模式主要功能是統一提供實例對象的引用。看下面的例子:
public class Factory{
public ClassesDao getClassesDao(){
ClassesDao cd = new ClassesDaoImpl();
return cd;
}
}
interface ClassesDao{
public String getClassesName();
}
class ClassesDaoImpl implements ClassesDao {
public String getClassesName(){
System.out.println("A班");
}
}
class test
{
public static void main(String[] args){
Factory f = new Factory();
f.getClassesDao().getClassesName();
}
}
這個是最簡單的例子了,就是通過工廠方法通過介面獲取對象的引用
3.建造模式
該模式其實就是說,一個對象的組成可能有很多其他的對象一起組成的,比如說,一個對象的實現非常復雜,有很多的屬性,而這些屬性又是其他對象的引用,可能這些對象的引用又包括很多的對象引用。封裝這些復雜性,就可以使用建造模式。
4.門面模式
這個模式個人感覺像是Service層的一個翻版。比如Dao我們定義了很多持久化方法,我們通過Service層將Dao的原子方法組成業務邏輯,再通過方法向上層提供服務。門面模式道理其實是一樣的。
5.策略模式
這個模式是將行為的抽象,即當有幾個類有相似的方法,將其中通用的部分都提取出來,從而使擴展更容易。

Ⅸ java中單態模式或單例模式(Singleton)有什麼意義

網路中這樣回答
單態模式,即Singleton模式主要作用是保證在面向對象編程語言設計編寫的程序中,一個類Class只有一個實例存在。
這兩個是一個意思。

Ⅹ java里,什麼是單態,什麼是多態

單態是一種設計模式,作用是保證在Java應用程序中,一個類Class只有一個實例存在。
多態嘛就是父類實例化不同的子類得到不同的結果,例如老虎和羊的父類是動物,老虎和羊都有一個方法就是吃,當分別用老虎和羊來實例化動物類並調用吃的方法時,一個是吃肉,一個是吃草,這種區別就是多態。

閱讀全文

與java單態類相關的資料

熱點內容
pdf轉換成word表格 瀏覽:351
無線遠端伺服器無響應是什麼意思 瀏覽:670
兩位整數倒序輸出python 瀏覽:781
為什麼我的世界天空伺服器進不去 瀏覽:262
釘釘直播後的視頻如何線上加密 瀏覽:503
聽主的命令 瀏覽:208
全民上雲時代雲伺服器 瀏覽:519
iphone不創建id如何下載app 瀏覽:972
windowsphp擴展安裝 瀏覽:93
emacslinux配置文件 瀏覽:379
python3在線教程 瀏覽:114
不小心刪文件夾的文件 瀏覽:480
java獲取手機IP 瀏覽:816
手機rar解壓密碼獲取 瀏覽:344
程序員被辭退工資怎麼處理 瀏覽:494
戀活的模型沒加密 瀏覽:159
如何把安卓機的微信轉移蘋果 瀏覽:583
爬山演算法相關題目 瀏覽:724
vc編程大全 瀏覽:118
excel表格單列數據加密 瀏覽:650