2018-04-27初識(shí)框架

軟件工程----框架

框架(Framework)是整個(gè)或部分系統(tǒng)的可重用設(shè)計(jì),表現(xiàn)為一組抽象構(gòu)件及構(gòu)件實(shí)例間交互的方法;另一種定義認(rèn)為车伞,框架是可被應(yīng)用開(kāi)發(fā)者定制的應(yīng)用骨架崎溃。前者是從應(yīng)用方面而后者是從目的方面給出的定義侦厚。

可以說(shuō),一個(gè)框架是一個(gè)可復(fù)用的設(shè)計(jì)構(gòu)件劲阎,它規(guī)定了應(yīng)用的體系結(jié)構(gòu)绘盟,闡明了整個(gè)設(shè)計(jì)、協(xié)作構(gòu)件之間的依賴關(guān)系悯仙、責(zé)任分配和控制流程龄毡,表現(xiàn)為一組抽象類以及其實(shí)例之間協(xié)作的方法,它為構(gòu)件復(fù)用提供了上下文(Context)關(guān)系锡垄。因此構(gòu)件庫(kù)的大規(guī)模重用也需要框架沦零。

構(gòu)件領(lǐng)域框架方法在很大程度上借鑒了硬件技術(shù)發(fā)展的成就,它是構(gòu)件技術(shù)货岭、軟件體系結(jié)構(gòu)研究和應(yīng)用軟件開(kāi)發(fā)三者發(fā)展結(jié)合的產(chǎn)物路操。在很多情況下,框架通常以構(gòu)件庫(kù)的形式出現(xiàn)千贯,但構(gòu)件庫(kù)只是框架的一個(gè)重要部分屯仗。框架的關(guān)鍵還在于框架內(nèi)對(duì)象間的交互模式和控制流模式搔谴。

框架比構(gòu)件可定制性強(qiáng)魁袜。在某種程度上,將構(gòu)件和框架看成兩個(gè)不同但彼此協(xié)作的技術(shù)或許更好》宓框架為構(gòu)件提供重用的環(huán)境店量,為構(gòu)件處理錯(cuò)誤、交換數(shù)據(jù)及激活操作提供了標(biāo)準(zhǔn)的方法鞠呈。

應(yīng)用框架的概念也很簡(jiǎn)單融师。它并不是包含構(gòu)件應(yīng)用程序的小片程序,而是實(shí)現(xiàn)了某應(yīng)用領(lǐng)域通用完備功能(除去特殊應(yīng)用的部分)的底層服務(wù)粟按。使用這種框架的編程人員可以在一個(gè)通用功能已經(jīng)實(shí)現(xiàn)的基礎(chǔ)上開(kāi)始具體的系統(tǒng)開(kāi)發(fā)诬滩∨啵框架提供了所有應(yīng)用期望的默認(rèn)行為的類集合灭将。具體的應(yīng)用通過(guò)重寫子類(該子類屬于框架的默認(rèn)行為)或組裝對(duì)象來(lái)支持應(yīng)用專用的行為。

應(yīng)用框架強(qiáng)調(diào)的是軟件的設(shè)計(jì)重用性和系統(tǒng)的可擴(kuò)充性,以縮短大型應(yīng)用軟件系統(tǒng)的開(kāi)發(fā)周期后控,提高開(kāi)發(fā)質(zhì)量庙曙。與傳統(tǒng)的基于類庫(kù)的面向?qū)ο?/a>重用技術(shù)比較,應(yīng)用框架更注重于面向?qū)I(yè)領(lǐng)域的軟件重用浩淘。應(yīng)用框架具有領(lǐng)域相關(guān)性捌朴,構(gòu)件根據(jù)框架進(jìn)行復(fù)合而生成可運(yùn)行的系統(tǒng)≌懦框架的粒度越大砂蔽,其中包含的領(lǐng)域知識(shí)就更加完整。

框架署惯,即framework左驾。其實(shí)就是某種應(yīng)用的半成品,就是一組組件极谊,供你選用完成你自己的系統(tǒng)诡右。簡(jiǎn)單說(shuō)就是使用別人搭好的舞臺(tái),你來(lái)做表演轻猖。而且帆吻,框架一般是成熟的,不斷升級(jí)的軟件咙边。 框架的概念最早起源于Smalltalk環(huán)境猜煮,其中最著名的框架是Smalltalk 80的用戶界面框架MVC(Model-View-Controller)。隨著用戶界面框架Interviews 【Linton 89】和ET++ 【W(wǎng)einand 89】 的開(kāi)發(fā)和發(fā)布败许,框架研究越來(lái)越受到研究人員的重視王带。雖然框架研究最初起源于用戶界面領(lǐng)域,但它還被成功地應(yīng)用到其他領(lǐng)域中檐束,如操作系統(tǒng)【Russo 90】辫秧、火警系統(tǒng) 【Molin 96a,Molin 96b】 等被丧。Taligent公司于1992年成立后盟戏,框架研究受到了廣泛的重視绪妹。該公司計(jì)劃基于框架來(lái)開(kāi)發(fā)一個(gè)完整的面向?qū)ο?/a>操作系統(tǒng)。另外柿究,該公司還發(fā)布了一套支持快速應(yīng)用開(kāi)發(fā)的工具集CommonPoint邮旷,其中包括了上百個(gè)面向?qū)ο罂蚣?【Andert 94,Cotter 95】∮框架還沒(méi)有統(tǒng)一的定義婶肩,其中Ralph Johnson所給出的定義基本上為大多數(shù)研究人員所接受:

一個(gè)框架是一個(gè)可復(fù)用設(shè)計(jì),它是由一組抽象類及其實(shí)例間協(xié)作關(guān)系來(lái)表達(dá)的【Johnson 98】貌夕。

這個(gè)定義是從框架內(nèi)涵的角度來(lái)定義框架的律歼,當(dāng)然也可以從框架用途的角度來(lái)給出框架的定義:

一個(gè)框架是在一個(gè)給定的問(wèn)題領(lǐng)域內(nèi),一個(gè)應(yīng)用程序的一部分設(shè)計(jì)與實(shí)現(xiàn)【Bosch 97】啡专。

從以上兩個(gè)定義可以看出险毁,框架是對(duì)特定應(yīng)用領(lǐng)域中的應(yīng)用系統(tǒng)的部分設(shè)計(jì)和實(shí)現(xiàn)子系統(tǒng)的整體結(jié)構(gòu)∶峭框架將應(yīng)用系統(tǒng)劃分為類和對(duì)象畔况,定義類和對(duì)象的責(zé)任,類和對(duì)象如何互相協(xié)作慧库,以及對(duì)象之間的控制線程跷跪。這些共有的設(shè)計(jì)因素由框架預(yù)先定義,應(yīng)用開(kāi)發(fā)人員只須關(guān)注于特定的應(yīng)用系統(tǒng)特有部分齐板〕痴埃框架刻畫了其應(yīng)用領(lǐng)域所共有的設(shè)計(jì)決策,所以說(shuō)框架著重于設(shè)計(jì)復(fù)用覆积,盡管框架中可能包含用某種程序設(shè)計(jì)語(yǔ)言實(shí)現(xiàn)的具體類听皿。

一個(gè)基于框架開(kāi)發(fā)的應(yīng)用系統(tǒng)包含一個(gè)或多個(gè)框架,與框架相關(guān)的構(gòu)件類宽档,以及與應(yīng)用系統(tǒng)相關(guān)的功能擴(kuò)展尉姨。與應(yīng)用系統(tǒng)相關(guān)的擴(kuò)展包括與應(yīng)用系統(tǒng)相關(guān)的類和對(duì)象。應(yīng)用系統(tǒng)可能僅僅復(fù)用了面向?qū)ο?/a>框架的一部分吗冤,或者說(shuō)又厉,它可能需要對(duì)框架進(jìn)行一些適應(yīng)性修改,以滿足系統(tǒng)需求椎瘟。

面向?qū)ο蟮目蚣茏鳛橐环N可復(fù)用的軟件覆致,在基于框架的軟件開(kāi)發(fā)過(guò)程中會(huì)涉及到框架的開(kāi)發(fā)和利用兩個(gè)方面的工作》挝担框架的開(kāi)發(fā)階段在于產(chǎn)生領(lǐng)域中可復(fù)用的設(shè)計(jì)煌妈。該階段的主要結(jié)果是框架以及與框架相關(guān)的構(gòu)件類。該階段的一個(gè)重要活動(dòng)是框架的演變和維護(hù)。象所有軟件一樣璧诵,框架也易于變化汰蜘。產(chǎn)生變化的原因很多,如應(yīng)用出錯(cuò)之宿,業(yè)務(wù)領(lǐng)域變化族操,等等。

不論是哪一種技術(shù)比被,最終都是為業(yè)務(wù)發(fā)展而服務(wù)的色难。從業(yè)務(wù)的角度來(lái)講。首先等缀,框架的是為了企業(yè)的業(yè)務(wù)發(fā)展和戰(zhàn)略規(guī)劃而服務(wù)的枷莉,他服從于企業(yè)的愿景(vision);其次项滑,框架最重要的目標(biāo)是提高企業(yè)的競(jìng)爭(zhēng)能力依沮,包括降低成本、提高質(zhì)量枪狂、改善客戶滿意程度,控制進(jìn)度等方面宋渔。最后州疾,框架實(shí)現(xiàn)這一目標(biāo)的方式是進(jìn)行有效的知識(shí)積累。軟件開(kāi)發(fā)是一種知識(shí)活動(dòng)皇拣,因此知識(shí)的聚集和積累是至關(guān)重要的严蓖。框架能夠采用一種結(jié)構(gòu)化的方式對(duì)某個(gè)特定的業(yè)務(wù)領(lǐng)域進(jìn)行描述氧急,也就是將這個(gè)領(lǐng)域相關(guān)的技術(shù)以代碼颗胡、文檔、模型等方式固化下來(lái)吩坝。

為什么要用框架

因?yàn)檐浖到y(tǒng)發(fā)展到今天已經(jīng)很復(fù)雜了毒姨,特別是服務(wù)器端軟件,涉及到的知識(shí)钉寝,內(nèi)容弧呐,問(wèn)題太多。在某些方面使用別人成熟的框架嵌纲,就相當(dāng)于讓別人幫你完成一些基礎(chǔ)工作俘枫,你只需要集中精力完成系統(tǒng)的業(yè)務(wù)邏輯設(shè)計(jì)。而且框架一般是成熟逮走,穩(wěn)健的鸠蚪,他可以處理系統(tǒng)很多細(xì)節(jié)問(wèn)題,比如,事物處理茅信,安全性酣栈,數(shù)據(jù)流控制等問(wèn)題。還有框架一般都經(jīng)過(guò)很多人使用汹押,所以結(jié)構(gòu)很好矿筝,所以擴(kuò)展性也很好,而且它是不斷升級(jí)的棚贾,你可以直接享受別人升級(jí)代碼帶來(lái)的好處窖维。

框架和設(shè)計(jì)模式

框架、設(shè)計(jì)模式這兩個(gè)概念總?cè)菀妆换煜畋裕鋵?shí)它們之間還是有區(qū)別的铸史。構(gòu)件通常是代碼重用,而設(shè)計(jì)模式是設(shè)計(jì)重用怯伊,框架則介于兩者之間琳轿,部分代碼重用,部分設(shè)計(jì)重用耿芹,有時(shí)分析也可重用崭篡。在軟件生產(chǎn)中有三種級(jí)別的重用:內(nèi)部重用,即在同一應(yīng)用中能公共使用的抽象塊;代碼重用吧秕,即將通用模塊組合成庫(kù)或工具集琉闪,以便在多個(gè)應(yīng)用和領(lǐng)域都能使用;應(yīng)用框架的重用砸彬,即為專用領(lǐng)域提供通用的或現(xiàn)成的基礎(chǔ)結(jié)構(gòu)颠毙,以獲得最高級(jí)別的重用性。

框架與設(shè)計(jì)模式雖然相似砂碉,但卻有著根本的不同蛀蜜。設(shè)計(jì)模式是對(duì)在某種環(huán)境中反復(fù)出現(xiàn)的問(wèn)題以及解決該問(wèn)題的方案的描述,它比框架更抽象增蹭;框架可以用代碼表示滴某,也能直接執(zhí)行或復(fù)用,而對(duì)模式而言只有實(shí)例才能用代碼表示;設(shè)計(jì)模式是比框架更小的元素沪铭,一個(gè)框架中往往含有一個(gè)或多個(gè)設(shè)計(jì)模式壮池,框架總是針對(duì)某一特定應(yīng)用領(lǐng)域,但同一模式卻可適用于各種應(yīng)用杀怠∫铮可以說(shuō),框架是軟件赔退,而設(shè)計(jì)模式是軟件的知識(shí)橙依。

框架開(kāi)發(fā)

框架的最大好處就是重用证舟。面向?qū)ο?/a>系統(tǒng)獲得的最大的復(fù)用方式就是框架,一個(gè)大的應(yīng)用系統(tǒng)往往可能由多層互相協(xié)作的框架組成窗骑。

由于框架能重用代碼女责,因此從一已有構(gòu)件庫(kù)中建立應(yīng)用變得非常容易,因?yàn)闃?gòu)件都采用框架統(tǒng)一定義的接口创译,從而使構(gòu)件間的通信簡(jiǎn)單抵知。

框架能重用設(shè)計(jì)。它提供可重用的抽象算法及高層設(shè)計(jì)软族,并能將大系統(tǒng)分解成更小的構(gòu)件刷喜,而且能描述構(gòu)件間的內(nèi)部接口。這些標(biāo)準(zhǔn)接口使在已有的構(gòu)件基礎(chǔ)上通過(guò)組裝建立各種各樣的系統(tǒng)成為可能立砸。只要符合接口定義掖疮,新的構(gòu)件就能插入框架中,構(gòu)件設(shè)計(jì)者就能重用構(gòu)架的設(shè)計(jì)颗祝。

框架還能重用分析浊闪。所有的人員若按照框架的思想來(lái)分析事務(wù),那么就能將它劃分為同樣的構(gòu)件螺戳,采用相似的解決方法搁宾,從而使采用同一框架的分析人員之間能進(jìn)行溝通。

主要特點(diǎn)

領(lǐng)域內(nèi)的軟件結(jié)構(gòu)一致性好温峭; 建立更加開(kāi)放的系統(tǒng)猛铅;

重用代碼大大增加,軟件生產(chǎn)效率和質(zhì)量也得到了提高凤藏;

軟件設(shè)計(jì)人員要專注于對(duì)領(lǐng)域的了解,使需求分析更充分堕伪;

存儲(chǔ)了經(jīng)驗(yàn)揖庄,可以讓那些經(jīng)驗(yàn)豐富的人員去設(shè)計(jì)框架和領(lǐng)域構(gòu)件,而不必限于低層編程欠雌;

允許采用快速原型技術(shù)蹄梢;

有利于在一個(gè)項(xiàng)目?jī)?nèi)多人協(xié)同工作;

大粒度的重用使得平均開(kāi)發(fā)費(fèi)用降低富俄,開(kāi)發(fā)速度加快禁炒,開(kāi)發(fā)人員減少,維護(hù)費(fèi)用降低霍比,而參數(shù)化框架使得適應(yīng)性幕袱、靈活性增強(qiáng)。

解決問(wèn)題

框架要解決的最重要的一個(gè)問(wèn)題是技術(shù)整合的問(wèn)題悠瞬,在J2EE的框架中们豌,有著各種各樣的技術(shù)涯捻,不同的軟件企業(yè)需要從J2EE中選擇不同的技術(shù),這就使得軟件企業(yè)最終的應(yīng)用依賴于這些技術(shù)望迎,技術(shù)自身的復(fù)雜性和技術(shù)的風(fēng)險(xiǎn)性將會(huì)直接對(duì)應(yīng)用造成沖擊障癌。而應(yīng)用是軟件企業(yè)的核心,是競(jìng)爭(zhēng)力的關(guān)鍵所在辩尊,因此應(yīng)該將應(yīng)用自身的設(shè)計(jì)和具體的實(shí)現(xiàn)技術(shù)解耦涛浙。這樣,軟件企業(yè)的研發(fā)將集中在應(yīng)用的設(shè)計(jì)上摄欲,而不是具體的技術(shù)實(shí)現(xiàn)轿亮,技術(shù)實(shí)現(xiàn)是應(yīng)用的底層支撐,它不應(yīng)該直接對(duì)應(yīng)用產(chǎn)生影響蒿涎。 要理解這一點(diǎn)哀托,我們來(lái)舉一些例子:

一個(gè)做視頻流應(yīng)用的軟件企業(yè),他為電廣行業(yè)提供整體的解決方案劳秋。他的優(yōu)勢(shì)在于將各種各樣的視頻硬件仓手、服務(wù)器、和管理結(jié)合起來(lái)玻淑,因此他扮演的是一個(gè)集成商的角色嗽冒。因此他的核心價(jià)值在于使用軟件技術(shù)將不同的硬件整合起來(lái),并在硬件的整合層面上提供一個(gè)統(tǒng)一的管理平臺(tái)补履。所以他的精力應(yīng)該放在解決兩個(gè)問(wèn)題:

如何找到一種方法添坊,將不同的硬件整合起來(lái),注意箫锤,這里的整合并不是技術(shù)整合贬蛙,而是一種思路上的整合。首先要考慮的絕對(duì)不是要使用什么技術(shù)谚攒,而是這些硬件需要提供哪些服務(wù)阳准,需要以什么樣的方式進(jìn)行管理。因此馏臭,這時(shí)候做的事情實(shí)際上是對(duì)領(lǐng)域進(jìn)行建模野蝇。例如,我們定義任何一種硬件都需要提供兩種能力括儒,一種是統(tǒng)一的管理接口绕沈,用于對(duì)所有硬件統(tǒng)一管理;另一種是服務(wù)接口帮寻,系統(tǒng)平臺(tái)可以查詢硬件所能夠提供的服務(wù)乍狐,并調(diào)用這些服務(wù)。所以规婆,設(shè)計(jì)的規(guī)范將會(huì)針對(duì)兩種能力進(jìn)行澜躺。

另一個(gè)問(wèn)題是如何描述這個(gè)管理系統(tǒng)的規(guī)范蝉稳。你需要描述各種管理活動(dòng),以及管理中所涉及的不同實(shí)體掘鄙。因?yàn)楣芾硐到y(tǒng)是針對(duì)硬件的管理耘戚,所以它是構(gòu)架在硬件整合平臺(tái)之上的。

在完成業(yè)務(wù)層面的設(shè)計(jì)之后操漠,我們?cè)賮?lái)看看具體的技術(shù)實(shí)現(xiàn)收津。光有規(guī)范和設(shè)計(jì)是不夠的,我們還需要選擇一個(gè)優(yōu)秀的技術(shù)浊伙。由于是對(duì)不同硬件的整合撞秋,我們想到采用Java提供的JMX技術(shù)。JMX技術(shù)適合用來(lái)進(jìn)行系統(tǒng)整合嚣鄙,它定義了一個(gè)通用的規(guī)范吻贿,并給出了遠(yuǎn)程管理端口的一些默認(rèn)實(shí)現(xiàn)。JMX已經(jīng)經(jīng)過(guò)了實(shí)踐的檢驗(yàn)哑子,不少的應(yīng)用服務(wù)器都采用了以JMX為基礎(chǔ)的結(jié)構(gòu)舅列,例如有名的JBoss。JMX已經(jīng)是一個(gè)很好的開(kāi)始了卧蜓,但是我們還需要在JMX的基礎(chǔ)上再做一些工作帐要。

相關(guān)概念

1. 白盒與黑盒框架

框架可分為白盒(White-Box)與黑盒(Black-Box)兩種框架。

基于繼承的框架被稱為白盒框架弥奸。所謂白盒即具備可視性榨惠,被繼承的父類的內(nèi)部實(shí)現(xiàn)細(xì)節(jié)對(duì)子類而言都是可知的。利用白盒框架的應(yīng)用開(kāi)發(fā)者通過(guò)衍生子類或重寫父類的成員方法來(lái)開(kāi)發(fā)系統(tǒng)盛霎。子類的實(shí)現(xiàn)很大程度上依賴于父類的實(shí)現(xiàn)赠橙,這種依賴性限制了重用的靈活性和完全性。但解決這種局限性的方法可以是只繼承抽象父類愤炸,因?yàn)?a target="_blank" rel="nofollow">抽象類基本上不提供具體的實(shí)現(xiàn)简烤。白盒框架是一個(gè)程序骨架,而用戶衍生出的子類是這個(gè)骨架上的附屬品摇幻。

基于對(duì)象構(gòu)件組裝的框架就是黑盒框架。應(yīng)用開(kāi)發(fā)者通過(guò)整理挥萌、組裝對(duì)象來(lái)獲得系統(tǒng)的實(shí)現(xiàn)绰姻。用戶只須了解構(gòu)件的外部接口,無(wú)須了解內(nèi)部的具體實(shí)現(xiàn)引瀑。另外狂芋,組裝比繼承更為靈活,它能動(dòng)態(tài)地改變憨栽,繼承只是一個(gè)靜態(tài)編譯時(shí)的概念帜矾。

在理想情況下翼虫,任何所需的功能都可通過(guò)組裝已有的構(gòu)件得到,事實(shí)上可獲得的構(gòu)件遠(yuǎn)遠(yuǎn)不能滿足需求屡萤,有時(shí)通過(guò)繼承獲得新的構(gòu)件比利用已有構(gòu)件組裝新構(gòu)件更容易珍剑,因此白盒和黑盒將同時(shí)應(yīng)用于系統(tǒng)的開(kāi)發(fā)中。不過(guò)白盒框架趨向于向黑盒框架發(fā)展死陆,黑盒框架也是系統(tǒng)開(kāi)發(fā)希望達(dá)到的理想目標(biāo)招拙。

2. 熱點(diǎn)、食譜以及好萊塢原則

成功的框架開(kāi)發(fā)需要確定領(lǐng)域?qū)S玫?'熱點(diǎn)'' (Hot spot)措译。應(yīng)用開(kāi)發(fā)者在框架的基礎(chǔ)上進(jìn)行開(kāi)發(fā)别凤,只須擴(kuò)展框架的某些部分,''熱點(diǎn)''就是在應(yīng)用領(lǐng)域的一種擴(kuò)展槽领虹,開(kāi)發(fā)者根據(jù)自己的需要填充這些擴(kuò)展槽规哪。''熱點(diǎn)''使框架具有靈活性,如在具體的實(shí)現(xiàn)中塌衰,擴(kuò)展槽可以被看成是一些抽象類诉稍,開(kāi)發(fā)者通過(guò)重寫抽象方法獲得具體實(shí)現(xiàn)。

''食譜'' (Cookbook)就是描述如何使用框架方法的文檔猾蒂。在''食譜''中包含了許多''烹飪''方法均唉,這些''烹飪''方法相當(dāng)于一些具體的操作步驟,描述了為解決某一專門問(wèn)題如何使用框架的詳細(xì)方法肚菠√蚣框架的內(nèi)部設(shè)計(jì)和實(shí)現(xiàn)細(xì)節(jié)通常不出現(xiàn)在''食譜''中。

框架的一個(gè)重要特征就是用戶定義的方法經(jīng)常被框架自身調(diào)用蚊逢,而不是從用戶的應(yīng)用代碼中調(diào)用层扶。這種機(jī)制常稱為“好萊塢原則”(Hollywood Principle)或“別調(diào)用我們,我們會(huì)調(diào)用您”烙荷。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末镜会,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子终抽,更是在濱河造成了極大的恐慌戳表,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昼伴,死亡現(xiàn)場(chǎng)離奇詭異匾旭,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)圃郊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門价涝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人持舆,你說(shuō)我怎么就攤上這事色瘩∥苯眩” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵居兆,是天一觀的道長(zhǎng)覆山。 經(jīng)常有香客問(wèn)我,道長(zhǎng)史辙,這世上最難降的妖魔是什么汹买? 我笑而不...
    開(kāi)封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮聊倔,結(jié)果婚禮上晦毙,老公的妹妹穿的比我還像新娘。我一直安慰自己耙蔑,他們只是感情好见妒,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著甸陌,像睡著了一般须揣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钱豁,一...
    開(kāi)封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天耻卡,我揣著相機(jī)與錄音,去河邊找鬼牲尺。 笑死卵酪,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谤碳。 我是一名探鬼主播溃卡,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蜒简!你這毒婦竟也來(lái)了瘸羡?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤搓茬,失蹤者是張志新(化名)和其女友劉穎犹赖,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體卷仑,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡冷尉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了系枪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡磕谅,死狀恐怖私爷,靈堂內(nèi)的尸體忽然破棺而出雾棺,到底是詐尸還是另有隱情,我是刑警寧澤衬浑,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布捌浩,位于F島的核電站,受9級(jí)特大地震影響工秩,放射性物質(zhì)發(fā)生泄漏尸饺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一助币、第九天 我趴在偏房一處隱蔽的房頂上張望浪听。 院中可真熱鬧,春花似錦眉菱、人聲如沸迹栓。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)克伊。三九已至,卻和暖如春华坦,著一層夾襖步出監(jiān)牢的瞬間愿吹,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工惜姐, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留犁跪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓载弄,卻偏偏與公主長(zhǎng)得像耘拇,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子宇攻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容