第一組:陳輝 對(duì)C#設(shè)計(jì)模式的具體理解
22.狀態(tài)者模式
在以下情況下可以考慮使用狀態(tài)者模式精算。
? 當(dāng)一個(gè)對(duì)象狀態(tài)轉(zhuǎn)換的條件表達(dá)式過(guò)于復(fù)雜時(shí)可以使用狀態(tài)者模式瓢宦。把狀態(tài)的判斷邏輯轉(zhuǎn)移到表示不同狀態(tài)的一系列類(lèi)中,可以把復(fù)雜的判斷邏輯簡(jiǎn)單化灰羽。
? 當(dāng)一個(gè)對(duì)象行為取決于它的狀態(tài)驮履,并且它需要在運(yùn)行時(shí)刻根據(jù)狀態(tài)改變它的行為時(shí),就可以考慮使用狀態(tài)者模式廉嚼。
我的理解是:對(duì)象類(lèi)里面生成狀態(tài)類(lèi)的對(duì)象玫镐,而對(duì)象里面的具體的方法其實(shí)是生成的狀態(tài)類(lèi)對(duì)象的方法,而狀態(tài)類(lèi)對(duì)象方法里面操作結(jié)束總是要調(diào)用自己里面改變狀態(tài)的方法來(lái)改變實(shí)際調(diào)用他的對(duì)象類(lèi)里面狀態(tài)類(lèi)對(duì)象的狀態(tài)怠噪。
還有其他21種類(lèi)型的設(shè)計(jì)模式恐似,詳情可以查看當(dāng)日文檔內(nèi)容。
第二組:馮佳麗 Java中常用緩存Cache機(jī)制的實(shí)現(xiàn)
——轉(zhuǎn)載
緩存傍念,就是將程序或系統(tǒng)經(jīng)常要調(diào)用的對(duì)象存在內(nèi)存中矫夷,一遍其使用時(shí)可以快速調(diào)用,不必再去創(chuàng)建新的重復(fù)的實(shí)例憋槐。這樣做可以減少系統(tǒng)開(kāi)銷(xiāo)双藕,提高系統(tǒng)效率。
緩存主要可分為二大類(lèi):
一阳仔、通過(guò)文件緩存,顧名思義文件緩存是指把數(shù)據(jù)存儲(chǔ)在磁盤(pán)上忧陪,不管你是以XML格式,序列化文件DAT格式還是其它文件格式近范;
二嘶摊、內(nèi)存緩存,也就是實(shí)現(xiàn)一個(gè)類(lèi)中靜態(tài)Map,對(duì)這個(gè)Map進(jìn)行常規(guī)的增刪查.
第三組:蔡永堅(jiān) AugularJS-特性1
AngularJS是一個(gè)新出現(xiàn)的強(qiáng)大客戶(hù)端技術(shù)评矩,提供給大家的一種開(kāi)發(fā)強(qiáng)大應(yīng)用的方式叶堆。這種方式利用并且擴(kuò)展HTML,CSS和javascript稚照,并且彌補(bǔ)了它們的一些非常明顯的不足蹂空。本應(yīng)該使用HTML來(lái)實(shí)現(xiàn)而現(xiàn)在由它開(kāi)發(fā)的動(dòng)態(tài)一些內(nèi)容俯萌。
AngularJS有五個(gè)最重要的功能和特性:
特性一:雙向的數(shù)據(jù)綁定
數(shù)據(jù)綁定可能是AngularJS最酷最實(shí)用的特性果录。它能夠幫助你避免書(shū)寫(xiě)大量的初始代碼從而節(jié)約開(kāi)發(fā)時(shí)間。一個(gè)典型的web應(yīng)用可能包含了80%的代碼用來(lái)處理咐熙,查詢(xún)和監(jiān)聽(tīng)DOM弱恒。數(shù)據(jù)綁定是的代碼更少,你可以專(zhuān)注于你的應(yīng)用棋恼。
我們想象一下Model是你的應(yīng)用中的簡(jiǎn)單事實(shí)返弹。你的Model是你用來(lái)讀取或者更新的部分锈玉。數(shù)據(jù)綁定指令提供了你的Model投射到view的方法。這些投射可以無(wú)縫的义起,毫不影響的應(yīng)用到web應(yīng)用中拉背。
傳統(tǒng)來(lái)說(shuō),當(dāng)model變化了默终。 開(kāi)發(fā)人員需要手動(dòng)處理DOM元素并且將屬性反映到這些變化中椅棺。這個(gè)一個(gè)雙向的過(guò)程。一方面齐蔽,model變化驅(qū)動(dòng)了DOM中元素變化两疚,另一方面,DOM元素的變化也會(huì)影響到Model含滴。這個(gè)在用戶(hù)互動(dòng)中更加復(fù)雜诱渤,因?yàn)殚_(kāi)發(fā)人員需要處理和解析
這些互動(dòng),然后融合到一個(gè)model中谈况,并且更新View勺美。這是一個(gè)手動(dòng)的復(fù)雜過(guò)程,當(dāng)一個(gè)應(yīng)用非常龐大的時(shí)候碑韵,將會(huì)是一件非常費(fèi)勁的事情励烦。
這里肯定有更好的解決方案!那就是AngularJS的雙向數(shù)據(jù)綁定泼诱,能夠同步DOM和Model等等坛掠。
特性二:模板
在AngularJS中,一個(gè)模板就是一個(gè)HTML文件治筒。但是HTML的內(nèi)容擴(kuò)展了屉栓,包含了很多幫助你映射model到view的內(nèi)容。
HTML模板將會(huì)被瀏覽器解析到DOM中耸袜。DOM然后成為AngularJS編譯器的輸入友多。AngularJS將會(huì)遍歷DOM模板來(lái)生成一些指導(dǎo),即堤框,directive(指令)域滥。所有的指令都負(fù)責(zé)針對(duì)view來(lái)設(shè)置數(shù)據(jù)綁定。
我們要理解AuguarJS并不把模板當(dāng)做String來(lái)操作蜈抓。輸入AngularJS的是DOM而非string启绰。數(shù)據(jù)綁定是DOM變化,不是字符串的連接或者innerHTML變化沟使。使用DOM作為輸入委可,而不是字符串,是AngularJS區(qū)別于其它的框架的最大原因腊嗡。使用DOM允許你擴(kuò)展指令詞匯并且可以創(chuàng)建你自己的指令着倾,甚至開(kāi)發(fā)可重用的組件拾酝。
最大的好處是為設(shè)計(jì)師和開(kāi)發(fā)者創(chuàng)建了一個(gè)緊密的工作流。設(shè)計(jì)師可以像往常一樣開(kāi)發(fā)標(biāo)簽卡者,然后開(kāi)發(fā)者拿過(guò)來(lái)添加上功能蒿囤,通過(guò)數(shù)據(jù)綁定將會(huì)使得這個(gè)過(guò)程非常簡(jiǎn)單。
這里有一個(gè)例子崇决,我們使用ng-repeat指令來(lái)循環(huán)圖片數(shù)組并且加入img模板蟋软,如下:
function AlbumCtrl($scope) {
scope.images = [
{"image":"img/image_01.png", "description":"Image 01 description"},
{"image":"img/image_02.png", "description":"Image 02 description"},
{"image":"img/image_03.png", "description":"Image 03 description"},
{"image":"img/image_04.png", "description":"Image 04 description"},
{"image":"img/image_05.png", "description":"Image 05 description"}
];
}
<div ng-controller="AlbumCtrl">
<ul>
<li ng-repeat="image in images">
<img ng-src="http://m.cnblogs.com/142260/{{image.thumbnail}}" rel="nofollow"/>
</li>
</ul>
</div>
這里還有一件事值得提一句,AngularJS并不強(qiáng)制你學(xué)習(xí)一個(gè)新的語(yǔ)法或者從你的應(yīng)用中提出你的模板嗽桩。
第四組:張?jiān)? Django中提示TemplateDoesNotExist解決
Django中提示TemplateDoesNotExist解決
嘗試了配置DIRS為絕對(duì)路徑等方法岳守,均無(wú)效,之后改為空碌冶,親測(cè)bug消失
在settings.py中找到
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [''],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
其中湿痢,'DIRS': 配置為 ['']即可
第五組:陳孚楠 設(shè)計(jì)模式
1、 簡(jiǎn)單工廠模式
簡(jiǎn)單工廠模式是屬于創(chuàng)建型模式扑庞,又叫做靜態(tài)工廠方法(Static Factory Method)模式譬重,但不屬于23種GOF設(shè)計(jì)模式之一。簡(jiǎn)單工廠模式是由一個(gè)工廠對(duì)象決定創(chuàng)建出哪一種產(chǎn)品類(lèi)的實(shí)例罐氨。簡(jiǎn)單工廠模式是工廠模式家族中最簡(jiǎn)單實(shí)用的模式臀规,可以理解為是不同工廠模式的一個(gè)特殊實(shí)現(xiàn)。試想一下栅隐,當(dāng)我們?cè)赾odeing的時(shí)候塔嬉,在A類(lèi)里面只要NEW了一個(gè)B類(lèi)的對(duì)象,那么A類(lèi)就會(huì)從某種程度上依賴(lài)B類(lèi)租悄。如果在后期需求發(fā)生變化或者是維護(hù)的時(shí)候谨究,需要修改B類(lèi)的時(shí)候,我們就需要打開(kāi)源代碼修改所有與這個(gè)類(lèi)有關(guān)的類(lèi)了泣棋。
例子:
工廠生產(chǎn)仿生機(jī)器胶哲,機(jī)器都會(huì)說(shuō)話,機(jī)器狗“汪”潭辈,機(jī)器貓“喵“鸯屿。。把敢。
1寄摆、簡(jiǎn)單工廠模式:
//接口產(chǎn)品Robot
public interface Robot{
...
public void Ssy();
...
}
//具體產(chǎn)品Dog
public class Dog implements Robot{
...
public void Ssy(){
"汪~(yú)"
}
...
}
//具體產(chǎn)品Cat
public class Cat implements Robot{
...
public void Ssy(){
"喵~"
}
...
}
//具體產(chǎn)品Bird
public class Bird implements Robot{
...
public void Ssy(){
"嘰~"
}
...
}
...
//工廠
public class RobotFactory{
...
//生產(chǎn)機(jī)器的方法
public Robot Produce(string type){
if(type=="Dog")return new Dog();
else if(type=="Cat")return new Cat();
else if(type=="Bird")return new Bird();
...
}
...
}
main(){
RobotFactory rf = new RobotFactory();
Robot r = rf.Produce("Dog");
r.Say();
}
輸出:"汪~(yú)"
提前需要知道你會(huì)需要哪些機(jī)器人,設(shè)定好技竟。
如果工廠需要生產(chǎn)別的產(chǎn)品冰肴,就要在工廠的生產(chǎn)方法中增加一個(gè)邏輯判斷屈藐。 用戶(hù)得要讓程序員增加產(chǎn)品實(shí)體類(lèi)并且修改工廠生產(chǎn)方法的代碼榔组。