[發(fā)明專利]在構(gòu)件編程中自動(dòng)生成Singleton模式的方法無效
| 申請(qǐng)?zhí)枺?/td> | 200610147859.0 | 申請(qǐng)日: | 2006-12-25 |
| 公開(公告)號(hào): | CN101211273A | 公開(公告)日: | 2008-07-02 |
| 發(fā)明(設(shè)計(jì))人: | 陳榕;梁宇洲;楊洋 | 申請(qǐng)(專利權(quán))人: | 上海科泰世紀(jì)科技有限公司 |
| 主分類號(hào): | G06F9/46 | 分類號(hào): | G06F9/46 |
| 代理公司: | 上海浦一知識(shí)產(chǎn)權(quán)代理有限公司 | 代理人: | 顧繼光 |
| 地址: | 201203上海市浦*** | 國(guó)省代碼: | 上海;31 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 構(gòu)件 編程 自動(dòng) 生成 singleton 模式 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及一種程序代碼的生成方法,特別涉及一種在構(gòu)件編程中自動(dòng)生成Singleton模式的方法。
背景技術(shù)
二十世紀(jì)八十年代以來,軟件編程技術(shù)有了很大的發(fā)展,其發(fā)展可以大致分為以下幾個(gè)階段:
面向?qū)ο缶幊蹋赐ㄟ^對(duì)軟件模塊的封裝,使其相對(duì)獨(dú)立,從而使復(fù)雜的問題簡(jiǎn)單化。面向?qū)ο缶幊虖?qiáng)調(diào)的是對(duì)象的封裝,但模塊(對(duì)象)之間的關(guān)系在編譯的時(shí)候已被固定,模塊之間的關(guān)系是靜態(tài)的,這種關(guān)系在程序運(yùn)行時(shí)不能改變;也就是說:在運(yùn)行時(shí)不能換用模塊中更小的功能單元。
面向構(gòu)件編程,即為了使不同軟件開發(fā)商提供的構(gòu)件模塊(軟件對(duì)象)可以相互操作使用,構(gòu)件之間的連接和調(diào)用通過標(biāo)準(zhǔn)的協(xié)議來實(shí)現(xiàn)。構(gòu)件化編程模型強(qiáng)調(diào)協(xié)議標(biāo)準(zhǔn),需要提供各廠商都能遵守的協(xié)議體系。就像公制螺絲的標(biāo)準(zhǔn)一樣,所有符合標(biāo)準(zhǔn)的螺絲和螺母都可以相互裝配。構(gòu)件化編程模型建立在面向?qū)ο蠹夹g(shù)的基礎(chǔ)之上,是完全面向?qū)ο蟮模峁┝藙?dòng)態(tài)構(gòu)造部件模塊(在運(yùn)行中可以構(gòu)造部件)的機(jī)制。構(gòu)件在運(yùn)行時(shí)可以動(dòng)態(tài)裝入,是可以更換的。但是,現(xiàn)有的面向構(gòu)件編程技術(shù)要求用戶自行定義構(gòu)件的非自描述接口,使得用戶程序的開發(fā)依然繁復(fù)。
CAR(Component?Assembly?Runtime)構(gòu)件技術(shù)是一種面向構(gòu)件編程技術(shù),它定義了一套網(wǎng)絡(luò)編程時(shí)代的構(gòu)件編程模型和編程規(guī)范,它規(guī)定了一組構(gòu)件間相互調(diào)用的標(biāo)準(zhǔn),使得二進(jìn)制構(gòu)件能夠自描述,能夠在運(yùn)行時(shí)動(dòng)態(tài)鏈接。CAR與微軟的COM相比,刪除了COM中過時(shí)的約定,禁止用戶定義COM的非自描述接口;完備了構(gòu)件及其接口的自描述功能,并且對(duì)用戶界面進(jìn)行了簡(jiǎn)化包裝,易學(xué)易用。在一種嵌入式操作系統(tǒng)上,CAR構(gòu)件技術(shù)由CAR語(yǔ)言(構(gòu)件描述語(yǔ)言,描述構(gòu)件的元數(shù)據(jù)信息)、CAR編譯器、自動(dòng)代碼生成工具以及CAR構(gòu)件基礎(chǔ)庫(kù)支持。CAR構(gòu)件技術(shù)體現(xiàn)了網(wǎng)絡(luò)編程時(shí)代的特性,編程界面簡(jiǎn)單。
在嵌入式操作系統(tǒng)軟件開發(fā)工具包(SDK)的支持下,CAR技術(shù)使得原來高深難懂的構(gòu)件編程技術(shù)很容易被C/C++程序員理解并掌握。用戶只需要用腳本語(yǔ)言設(shè)計(jì)相關(guān)類和接口的關(guān)系以及其屬性,并存為.car文件,通過CAR編譯器的處理就可以自動(dòng)生成相關(guān)的代碼。
單例模式(Singleton模式)屬于設(shè)計(jì)模式中的一種方法,它的目的是保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)能夠訪問它的全局訪問點(diǎn)。這種模式在實(shí)際開發(fā)中的應(yīng)用也非常多,例如在嵌入式圖形系統(tǒng)應(yīng)用中,由于內(nèi)存資源比較寶貴,很多模塊都必須保證在整個(gè)過程中只能有一個(gè)實(shí)例。在實(shí)際編程設(shè)計(jì)中,如果要運(yùn)用該模式,用戶可以設(shè)計(jì)一個(gè)Singleton的基類,然后在其子類實(shí)例中進(jìn)行各種擴(kuò)展來配置應(yīng)用,也可以直接設(shè)計(jì)一個(gè)不允許繼承的Singleton類,里面包含了相關(guān)功能。無論采取哪種方法,用戶都必須自行實(shí)現(xiàn)Singleton模式的相關(guān)代碼。如果能找到一種在CAR構(gòu)件編程中自動(dòng)生成singleton模式代碼的方法,將大大降低用戶編程的復(fù)雜程度。
考慮一個(gè)銀行帳戶管理系統(tǒng),其中有上百萬(wàn)個(gè)客戶帳號(hào),要訪問每一個(gè)客戶的帳號(hào),需要對(duì)客戶的權(quán)限進(jìn)行驗(yàn)證。在這樣的系統(tǒng)里,可以設(shè)計(jì)一個(gè)Singleton類叫做AccountManager,用來管理系統(tǒng)中的客戶帳戶,此類的實(shí)例在整個(gè)系統(tǒng)中只有一個(gè),如果用C#實(shí)現(xiàn)的話,在多線程環(huán)境下,可以采用以下方法:
public?sealed?class?AccountManager
{
????這個(gè)類的其他功能實(shí)現(xiàn)代碼......
????以下是singleton模式的實(shí)現(xiàn)代碼:
????static?AccountManager?instance_=null;
????static?readonly?object?lock_=new?Object();
????private?AccountManager()
????{
????}
????public?static?AccountManager?Instance
????{
????????get
????????{
????????????lock(lock_)
????????????{
???????????????if(instance_==null)
???????????????{
??????????????????instance_=new?AccountManager();
???????????????}
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于上海科泰世紀(jì)科技有限公司,未經(jīng)上海科泰世紀(jì)科技有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200610147859.0/2.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。





