澶栬妯″紡(闂ㄩ潰妯″紡)-Facade
澶栬妯″紡鏄竴绉嶄娇鐢ㄩ鐜囬潪甯搁珮鐨勭粨鏋勫瀷璁捐妯″紡锛屽畠閫氳繃寮曞叆涓€涓瑙傝鑹叉潵绠€鍖栧鎴风涓庡瓙绯荤粺涔嬮棿鐨勪氦浜掞紝涓哄鏉傜殑瀛愮郴缁熻皟鐢ㄦ彁渚涗竴涓粺涓€鐨勫叆鍙o紝闄嶄綆瀛愮郴缁熶笌瀹㈡埛绔殑鑰﹀悎搴︼紝涓斿鎴风璋冪敤闈炲父鏂逛究銆?/span>
聽
1.聽澶栬妯″紡姒傝堪
聽聽聽聽聽 涓嶇煡閬撳ぇ瀹舵湁娌℃湁姣旇緝杩囪嚜宸辨场鑼跺拰鍘昏尪棣嗗枬鑼剁殑鍖哄埆锛屽鏋滄槸鑷繁娉¤尪闇€瑕佽嚜琛屽噯澶囪尪鍙躲€佽尪鍏峰拰寮€姘达紝濡傚浘1(A)鎵€绀猴紝鑰屽幓鑼堕鍠濊尪锛屾渶绠€鍗曠殑鏂瑰紡灏辨槸璺熻尪棣嗘湇鍔″憳璇存兂瑕佷竴鏉粈涔堟牱鐨勮尪锛屾槸閾佽闊炽€佺ⅶ铻烘槬杩樻槸瑗挎箹榫欎簳锛熸鍥犱负鑼堕鏈夋湇鍔″憳锛岄【瀹㈡棤椤荤洿鎺ュ拰鑼跺彾銆佽尪鍏枫€佸紑姘寸瓑浜や簰锛屾暣涓场鑼惰繃绋嬬敱鏈嶅姟鍛樻潵瀹屾垚锛岄【瀹㈠彧闇€涓庢湇鍔″憳浜や簰鍗冲彲锛屾暣涓繃绋嬮潪甯哥畝鍗曠渷浜嬶紝濡傚浘1(B)鎵€绀恒€?/span>
鍥?span style="font-family: 'Times New Roman';">1聽涓ょ鍠濊尪鏂瑰紡绀烘剰鍥?/span>
聽聽聽聽聽聽 鍦ㄨ蒋浠跺紑鍙戜腑锛屾湁鏃跺€欎负浜嗗畬鎴愪竴椤硅緝涓哄鏉傜殑鍔熻兘锛屼竴涓鎴风被闇€瑕佸拰澶氫釜涓氬姟绫讳氦浜掞紝鑰岃繖浜涢渶瑕佷氦浜掔殑涓氬姟绫荤粡甯镐細浣滀负涓€涓暣浣撳嚭鐜帮紝鐢变簬娑夊強鍒扮殑绫绘瘮杈冨锛屽鑷翠娇鐢ㄦ椂浠g爜杈冧负澶嶆潅锛屾鏃讹紝鐗瑰埆闇€瑕佷竴涓被浼兼湇鍔″憳涓€鏍风殑瑙掕壊锛岀敱瀹冩潵璐熻矗鍜屽涓笟鍔$被杩涜浜や簰锛岃€屽鎴风被鍙渶涓庤绫讳氦浜掋€傚瑙傛ā寮忛€氳繃寮曞叆涓€涓柊鐨?strong>澶栬绫?span style="font-family: 'Times New Roman';">(Facade)鏉ュ疄鐜拌鍔熻兘锛屽瑙傜被鍏呭綋浜嗚蒋浠剁郴缁熶腑鐨勨€滄湇鍔″憳鈥濓紝瀹冧负澶氫釜涓氬姟绫荤殑璋冪敤鎻愪緵浜嗕竴涓粺涓€鐨勫叆鍙o紝绠€鍖栦簡绫讳笌绫讳箣闂寸殑浜や簰銆傚湪澶栬妯″紡涓紝閭d簺闇€瑕佷氦浜掔殑涓氬姟绫昏绉颁负瀛愮郴缁?span style="font-family: 'Times New Roman';">(Subsystem)銆傚鏋滄病鏈夊瑙傜被锛岄偅涔堟瘡涓鎴风被闇€瑕佸拰澶氫釜瀛愮郴缁熶箣闂磋繘琛屽鏉傜殑浜や簰锛岀郴缁熺殑鑰﹀悎搴﹀皢寰堝ぇ锛屽鍥?span style="font-family: 'Times New Roman';">2(A)鎵€绀猴紱鑰屽紩鍏ュ瑙傜被涔嬪悗锛屽鎴风被鍙渶瑕佺洿鎺ヤ笌澶栬绫讳氦浜掞紝瀹㈡埛绫讳笌瀛愮郴缁熶箣闂村師鏈夌殑澶嶆潅寮曠敤鍏崇郴鐢卞瑙傜被鏉ュ疄鐜帮紝浠庤€岄檷浣庝簡绯荤粺鐨勮€﹀悎搴︼紝濡傚浘2(B)鎵€绀恒€?/span>
鍥?span style="font-family: 'Times New Roman';">2聽澶栬妯″紡绀烘剰鍥?/span>
聽聽聽聽聽聽聽澶栬妯″紡涓紝涓€涓瓙绯荤粺鐨勫閮ㄤ笌鍏跺唴閮ㄧ殑閫氫俊閫氳繃涓€涓粺涓€鐨勫瑙傜被杩涜锛屽瑙傜被灏嗗鎴风被涓庡瓙绯荤粺鐨勫唴閮ㄥ鏉傛€у垎闅斿紑锛屼娇寰楀鎴风被鍙渶瑕佷笌澶栬瑙掕壊鎵撲氦閬擄紝鑰屼笉闇€瑕佷笌瀛愮郴缁熷唴閮ㄧ殑寰堝瀵硅薄鎵撲氦閬撱€?/span>
聽聽聽聽聽 澶栬妯″紡瀹氫箟濡備笅锛?/span>
聽
澶栬妯″紡锛?/strong>涓哄瓙绯荤粺涓殑涓€缁勬帴鍙f彁渚涗竴涓粺涓€鐨勫叆鍙c€傚瑙傛ā寮忓畾涔変簡涓€涓珮灞傛帴鍙o紝杩欎釜鎺ュ彛浣垮緱杩欎竴瀛愮郴缁熸洿鍔犲鏄撲娇鐢ㄣ€?/span> Facade Pattern:聽Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use. |
聽
聽
聽聽聽聽聽 澶栬妯″紡鍙堢О涓洪棬闈㈡ā寮忥紝瀹冩槸涓€绉嶅璞$粨鏋勫瀷妯″紡銆傚瑙傛ā寮忔槸杩背鐗规硶鍒欑殑涓€绉嶅叿浣撳疄鐜帮紝閫氳繃寮曞叆涓€涓柊鐨勫瑙傝鑹插彲浠ラ檷浣庡師鏈夌郴缁熺殑澶嶆潅搴︼紝鍚屾椂闄嶄綆瀹㈡埛绫讳笌瀛愮郴缁熺殑鑰﹀悎搴︺€?/span>
聽
2. 澶栬妯″紡缁撴瀯涓庡疄鐜?/h2>
2.1 妯″紡缁撴瀯
聽聽聽聽聽聽澶栬妯″紡娌℃湁涓€涓竴鑸寲鐨勭被鍥炬弿杩帮紝閫氬父浣跨敤濡傚浘2(B)鎵€绀虹ず鎰忓浘鏉ヨ〃绀哄瑙傛ā寮忋€傚浘3鎵€绀虹殑绫诲浘涔熷彲浠ヤ綔涓烘弿杩板瑙傛ā寮忕殑缁撴瀯鍥撅細
鍥?span style="font-family: 'Times New Roman';">3聽澶栬妯″紡缁撴瀯鍥?/span>
聽聽聽聽聽聽 鐢卞浘3鍙煡锛屽瑙傛ā寮忓寘鍚涓嬩袱涓鑹诧細
聽聽聽聽聽聽(1) Facade锛堝瑙傝鑹诧級锛?/span>鍦ㄥ鎴风鍙互璋冪敤瀹冪殑鏂规硶锛屽湪澶栬瑙掕壊涓彲浠ョ煡閬撶浉鍏崇殑锛堜竴涓垨鑰呭涓級瀛愮郴缁熺殑鍔熻兘鍜岃矗浠伙紱鍦ㄦ甯告儏鍐典笅锛屽畠灏嗘墍鏈変粠瀹㈡埛绔彂鏉ョ殑璇锋眰濮旀淳鍒扮浉搴旂殑瀛愮郴缁熷幓锛屼紶閫掔粰鐩稿簲鐨勫瓙绯荤粺瀵硅薄澶勭悊銆?/span>
聽聽聽聽聽聽(2) SubSystem锛堝瓙绯荤粺瑙掕壊锛夛細鍦ㄨ蒋浠剁郴缁熶腑鍙互鏈変竴涓垨鑰呭涓瓙绯荤粺瑙掕壊锛屾瘡涓€涓瓙绯荤粺鍙互涓嶆槸涓€涓崟鐙殑绫伙紝鑰屾槸涓€涓被鐨勯泦鍚堬紝瀹冨疄鐜板瓙绯荤粺鐨勫姛鑳斤紱姣忎竴涓瓙绯荤粺閮藉彲浠ヨ瀹㈡埛绔洿鎺ヨ皟鐢紝鎴栬€呰澶栬瑙掕壊璋冪敤锛屽畠澶勭悊鐢卞瑙傜被浼犺繃鏉ョ殑璇锋眰锛涘瓙绯荤粺骞朵笉鐭ラ亾澶栬鐨勫瓨鍦紝瀵逛簬瀛愮郴缁熻€岃█锛屽瑙傝鑹蹭粎浠呮槸鍙﹀涓€涓鎴风鑰屽凡銆?/span>
聽
2.2 妯″紡瀹炵幇
聽聽聽聽聽 澶栬妯″紡鐨勪富瑕佺洰鐨勫湪浜庨檷浣庣郴缁熺殑澶嶆潅绋嬪害锛屽湪闈㈠悜瀵硅薄杞欢绯荤粺涓紝绫讳笌绫讳箣闂寸殑鍏崇郴瓒婂锛屼笉鑳借〃绀虹郴缁熻璁″緱瓒婂ソ锛屽弽鑰岃〃绀虹郴缁熶腑绫讳箣闂寸殑鑰﹀悎搴﹀お澶э紝杩欐牱鐨勭郴缁熷湪缁存姢鍜屼慨鏀规椂閮界己涔忕伒娲绘€э紝鍥犱负涓€涓被鐨勬敼鍔ㄤ細瀵艰嚧澶氫釜绫诲彂鐢熷彉鍖栵紝鑰屽瑙傛ā寮忕殑寮曞叆鍦ㄥ緢澶х▼搴︿笂闄嶄綆浜嗙被涓庣被涔嬮棿鐨勮€﹀悎鍏崇郴銆傚紩鍏ュ瑙傛ā寮忎箣鍚庯紝澧炲姞鏂扮殑瀛愮郴缁熸垨鑰呯Щ闄ゅ瓙绯荤粺閮介潪甯告柟渚匡紝瀹㈡埛绫绘棤椤昏繘琛屼慨鏀癸紙鎴栬€呮瀬灏戠殑淇敼锛夛紝鍙渶瑕佸湪澶栬绫讳腑澧炲姞鎴栫Щ闄ゅ瀛愮郴缁熺殑寮曠敤鍗冲彲銆備粠杩欎竴鐐规潵璇达紝澶栬妯″紡鍦ㄤ竴瀹氱▼搴︿笂骞朵笉绗﹀悎寮€闂師鍒欙紝澧炲姞鏂扮殑瀛愮郴缁熼渶瑕佸鍘熸湁绯荤粺杩涜涓€瀹氱殑淇敼锛岃櫧鐒惰繖涓慨鏀瑰伐浣滈噺涓嶅ぇ銆?/span>
聽聽聽聽聽 澶栬妯″紡涓墍鎸囩殑瀛愮郴缁熸槸涓€涓箍涔夌殑姒傚康锛屽畠鍙互鏄竴涓被銆佷竴涓姛鑳芥ā鍧椼€佺郴缁熺殑涓€涓粍鎴愰儴鍒嗘垨鑰呬竴涓畬鏁寸殑绯荤粺銆傚瓙绯荤粺绫婚€氬父鏄竴浜涗笟鍔$被锛屽疄鐜颁簡涓€浜涘叿浣撶殑銆佺嫭绔嬬殑涓氬姟鍔熻兘锛屽叾鍏稿瀷浠g爜濡備笅锛?/span>
- class聽SubSystemA聽聽
- {聽聽
- 聽聽聽聽public聽void聽MethodA()聽聽
- 聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽//涓氬姟瀹炵幇浠g爜聽聽
- 聽聽聽聽}聽聽
- }聽聽
- 聽聽
- class聽SubSystemB聽聽
- {聽聽
- 聽聽聽聽public聽void聽MethodB()聽聽
- 聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽//涓氬姟瀹炵幇浠g爜聽聽
- 聽聽聽聽聽}聽聽
- }聽聽
- 聽聽
- class聽SubSystemC聽聽
- {聽聽
- 聽聽聽聽public聽void聽MethodC()聽聽
- 聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽//涓氬姟瀹炵幇浠g爜聽聽
- 聽聽聽聽}聽聽
- }聽聽
聽聽聽聽聽聽鍦ㄥ紩鍏ュ瑙傜被涔嬪悗锛屼笌瀛愮郴缁熶笟鍔$被涔嬮棿鐨勪氦浜掔粺涓€鐢卞瑙傜被鏉ュ畬鎴愶紝鍦ㄥ瑙傜被涓€氬父瀛樺湪濡備笅浠g爜锛?/span>
- class聽Facade聽聽
- {聽聽
- 聽聽聽聽private聽SubSystemA聽obj1聽=聽new聽SubSystemA();聽聽
- 聽聽聽聽private聽SubSystemB聽obj2聽=聽new聽SubSystemB();聽聽
- 聽聽聽聽private聽SubSystemC聽obj3聽=聽new聽SubSystemC();聽聽
- 聽聽
- 聽聽聽聽public聽void聽Method()聽聽
- 聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽obj1.MethodA();聽聽
- 聽聽聽聽聽聽聽聽obj2.MethodB();聽聽
- 聽聽聽聽聽聽聽聽obj3.MethodC();聽聽
- 聽聽聽聽}聽聽
- }聽聽
聽聽聽聽聽聽鐢变簬鍦ㄥ瑙傜被涓淮鎸佷簡瀵瑰瓙绯荤粺瀵硅薄鐨勫紩鐢紝瀹㈡埛绔彲浠ラ€氳繃澶栬绫绘潵闂存帴璋冪敤瀛愮郴缁熷璞$殑涓氬姟鏂规硶锛岃€屾棤椤讳笌瀛愮郴缁熷璞$洿鎺ヤ氦浜掋€傚紩鍏ュ瑙傜被鍚庯紝瀹㈡埛绔唬鐮佸彉寰楅潪甯哥畝鍗曪紝鍏稿瀷浠g爜濡備笅锛?/span>
- class聽Program聽聽
- {聽聽
- 聽聽聽聽static聽void聽Main(string[]聽args)聽聽
- 聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽Facade聽facade聽=聽new聽Facade();聽聽
- 聽聽聽聽聽聽聽聽facade.Method();聽聽
- 聽聽聽聽}聽聽
- }聽聽
聽
3. 澶栬妯″紡搴旂敤瀹炰緥
聽聽聽聽聽聽 涓嬮潰閫氳繃涓€涓簲鐢ㄥ疄渚嬫潵杩涗竴姝ュ涔犲拰鐞嗚В澶栬妯″紡銆?/span>
聽
聽聽聽聽聽聽 1.聽瀹炰緥璇存槑
聽聽聽聽聽聽聽鏌愯蒋浠跺叕鍙告寮€鍙戜竴涓彲搴旂敤浜庡涓蒋浠剁殑鏂囦欢鍔犲瘑妯″潡锛岃妯″潡鍙互瀵规枃浠朵腑鐨勬暟鎹繘琛屽姞瀵嗗苟灏嗗姞瀵嗕箣鍚庣殑鏁版嵁瀛樺偍鍦ㄤ竴涓柊鏂囦欢涓紝鍏蜂綋鐨勬祦绋嬪寘鎷笁涓儴鍒嗭紝鍒嗗埆鏄鍙栨簮鏂囦欢銆佸姞瀵嗐€佷繚瀛樺姞瀵嗕箣鍚庣殑鏂囦欢锛屽叾涓紝璇诲彇鏂囦欢鍜屼繚瀛樻枃浠朵娇鐢ㄦ祦鏉ュ疄鐜帮紝鍔犲瘑鎿嶄綔閫氳繃姹傛ā杩愮畻瀹炵幇銆傝繖涓変釜鎿嶄綔鐩稿鐙珛锛屼负浜嗗疄鐜颁唬鐮佺殑鐙珛閲嶇敤锛岃璁捐鏇寸鍚堝崟涓€鑱岃矗鍘熷垯锛岃繖涓変釜鎿嶄綔鐨勪笟鍔′唬鐮佸皝瑁呭湪涓変釜涓嶅悓鐨勭被涓€?/span> 聽聽聽聽聽聽 鐜颁娇鐢ㄥ瑙傛ā寮忚璁¤鏂囦欢鍔犲瘑妯″潡銆?/strong> |
聽聽聽聽聽聽
聽聽聽聽聽聽 2.聽瀹炰緥绫诲浘
聽聽聽聽聽聽 閫氳繃鍒嗘瀽锛屾湰瀹炰緥缁撴瀯鍥惧鍥?span style="font-family: 'Times New Roman';">4鎵€绀恒€?/span>
鍥?span style="font-family: 'Times New Roman';">4聽鏂囦欢鍔犲瘑妯″潡缁撴瀯鍥?/span>
聽聽聽聽聽聽 鍦ㄥ浘4涓紝EncryptFacade鍏呭綋澶栬绫伙紝FileReader銆?span style="font-family: 'Times New Roman';">CipherMachine鍜?span style="font-family: 'Times New Roman';">FileWriter鍏呭綋瀛愮郴缁熺被銆?/span>
聽
聽聽聽聽聽聽 3.聽瀹炰緥浠g爜
聽聽聽聽聽聽聽(1) FileReader锛氭枃浠惰鍙栫被锛屽厖褰撳瓙绯荤粺绫汇€?/span>
- //FileReader.cs聽聽
- using聽System;聽聽
- using聽System.Text;聽聽
- using聽System.IO;聽聽
- 聽聽
- namespace聽FacadeSample聽聽
- {聽聽
- 聽聽聽聽class聽FileReader聽聽
- 聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽public聽string聽Read(string聽fileNameSrc)聽聽聽
- 聽聽聽聽聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽Console.Write("璇诲彇鏂囦欢锛岃幏鍙栨槑鏂囷細");聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽FileStream聽fs聽=聽null;聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽StringBuilder聽sb聽=聽new聽StringBuilder();聽聽
- 聽聽聽聽聽聽聽try聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽fs聽=聽new聽FileStream(fileNameSrc,聽FileMode.Open);聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽int聽data;聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽while((data聽=聽fs.ReadByte())!=聽-1)聽聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽sb聽=聽sb.Append((char)data);聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽fs.Close();聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽Console.WriteLine(sb.ToString());聽聽
- 聽聽聽聽聽聽聽}聽聽
- 聽聽聽聽聽聽聽catch(FileNotFoundException聽e)聽聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽聽聽聽Console.WriteLine("鏂囦欢涓嶅瓨鍦紒");聽聽
- 聽聽聽聽聽聽聽}聽聽
- 聽聽聽聽聽聽聽catch(IOException聽e)聽聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽聽聽聽Console.WriteLine("鏂囦欢鎿嶄綔閿欒锛?);聽聽
- 聽聽聽聽聽聽聽}聽聽
- 聽聽聽聽聽聽聽return聽sb.ToString();聽聽
- 聽聽聽聽聽聽聽聽}聽聽
- 聽聽聽聽}聽聽
- }聽聽
聽聽聽聽聽聽 (2) CipherMachine锛氭暟鎹姞瀵嗙被锛屽厖褰撳瓙绯荤粺绫汇€?/span>
- //CipherMachine.cs聽聽
- using聽System;聽聽
- using聽System.Text;聽聽
- 聽聽
- namespace聽FacadeSample聽聽
- {聽聽
- 聽聽聽聽class聽CipherMachine聽聽
- 聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽public聽string聽Encrypt(string聽plainText)聽聽聽
- 聽聽聽聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽Console.Write("鏁版嵁鍔犲瘑锛屽皢鏄庢枃杞崲涓哄瘑鏂囷細");聽聽
- 聽聽聽聽聽聽聽string聽es聽=聽"";聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽char[]聽chars聽=聽plainText.ToCharArray();聽聽
- 聽聽聽聽聽聽聽foreach(char聽ch聽in聽chars)聽聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽string聽c聽=聽(ch聽%聽7).ToString();聽聽
- 聽聽聽聽聽聽聽聽聽聽聽es聽+=聽c;聽聽
- 聽聽聽聽聽聽聽}聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽Console.WriteLine(es);聽聽
- 聽聽聽聽聽聽聽return聽es;聽聽
- 聽聽聽聽}聽聽
- 聽聽聽聽}聽聽
- }聽聽
聽聽聽聽聽聽 (3) FileWriter锛氭枃浠朵繚瀛樼被锛屽厖褰撳瓙绯荤粺绫汇€?/span>
- //FileWriter.cs聽聽
- using聽System;聽聽
- using聽System.IO;聽聽
- using聽System.Text;聽聽
- 聽聽
- namespace聽FacadeSample聽聽
- {聽聽
- 聽聽聽聽class聽FileWriter聽聽
- 聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽public聽void聽Write(string聽encryptStr,string聽fileNameDes)聽聽聽
- 聽聽聽聽聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽Console.WriteLine("淇濆瓨瀵嗘枃锛屽啓鍏ユ枃浠躲€?);聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽FileStream聽fs聽=聽null;聽聽
- 聽聽聽聽聽聽聽try聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽fs聽=聽new聽FileStream(fileNameDes,聽FileMode.Create);聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽byte[]聽str聽=聽Encoding.Default.GetBytes(encryptStr);聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽fs.Write(str,0,str.Length);聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽fs.Flush();聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽fs.Close();聽聽
- 聽聽聽聽聽聽聽}聽聽聽聽聽聽
- 聽聽聽聽聽聽聽catch(FileNotFoundException聽e)聽聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽Console.WriteLine("鏂囦欢涓嶅瓨鍦紒");聽聽
- 聽聽聽聽聽聽聽}聽聽
- 聽聽聽聽聽聽聽catch(IOException聽e)聽聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽Console.WriteLine(e.Message);聽聽
- 聽聽聽聽聽聽聽聽聽聽聽Console.WriteLine("鏂囦欢鎿嶄綔閿欒锛?);聽聽
- 聽聽聽聽聽聽聽}聽聽聽聽聽聽聽聽聽聽
- 聽聽聽聽聽聽聽聽}聽聽
- 聽聽聽聽}聽聽
- }聽聽
聽聽聽聽聽聽 (4) EncryptFacade锛氬姞瀵嗗瑙傜被锛屽厖褰撳瑙傜被銆?/span>
- //聽EncryptFacade.cs聽聽
- namespace聽FacadeSample聽聽
- {聽聽
- 聽聽聽聽class聽EncryptFacade聽聽
- 聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽//缁存寔瀵瑰叾浠栧璞$殑寮曠敤聽聽
- 聽聽聽聽聽聽聽聽聽private聽FileReader聽reader;聽聽
- 聽聽聽聽聽聽聽聽private聽CipherMachine聽cipher;聽聽
- 聽聽聽聽聽聽聽聽private聽FileWriter聽writer;聽聽
- 聽聽
- 聽聽聽聽聽聽聽聽public聽EncryptFacade()聽聽
- 聽聽聽聽聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽reader聽=聽new聽FileReader();聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽cipher聽=聽new聽CipherMachine();聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽writer聽=聽new聽FileWriter();聽聽
- 聽聽聽聽聽聽聽聽}聽聽
- 聽聽
- 聽聽聽聽聽聽聽聽//璋冪敤鍏朵粬瀵硅薄鐨勪笟鍔℃柟娉?/span>聽聽
- 聽聽聽聽聽聽聽聽聽public聽void聽FileEncrypt(string聽fileNameSrc,聽string聽fileNameDes)聽聽
- 聽聽聽聽聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽string聽plainStr聽=聽reader.Read(fileNameSrc);聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽string聽encryptStr聽=聽cipher.Encrypt(plainStr);聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽writer.Write(encryptStr,聽fileNameDes);聽聽
- 聽聽聽聽聽聽聽聽}聽聽
- 聽聽聽聽}聽聽
- }聽聽
聽聽聽聽聽聽 (5) Program锛氬鎴风娴嬭瘯绫?/span>
- //Program.cs聽聽
- using聽System;聽聽
- 聽聽
- namespace聽FacadeSample聽聽
- {聽聽
- 聽聽聽聽class聽Program聽聽
- 聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽static聽void聽Main(string[]聽args)聽聽
- 聽聽聽聽聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽EncryptFacade聽ef聽=聽new聽EncryptFacade();聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽ef.FileEncrypt("src.txt",聽"des.txt");聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽Console.Read();聽聽
- 聽聽聽聽聽聽聽聽}聽聽
- 聽聽聽聽}聽聽
- }聽聽
聽聽聽聽聽聽聽 4.聽缁撴灉鍙婂垎鏋?/span>
聽聽聽聽聽聽 缂栬瘧骞惰繍琛岀▼搴忥紝杈撳嚭缁撴灉濡備笅锛?/span>
聽
璇诲彇鏂囦欢锛岃幏鍙栨槑鏂囷細Hello world! 鏁版嵁鍔犲瘑锛屽皢鏄庢枃杞崲涓哄瘑鏂囷細233364062325 淇濆瓨瀵嗘枃锛屽啓鍏ユ枃浠躲€?/span> |
聽
聽
聽聽聽聽聽聽 鍦ㄦ湰瀹炰緥涓紝瀵规枃浠?span style="font-family: 'Times New Roman';">src.txt涓殑鏁版嵁杩涜鍔犲瘑锛岃鏂囦欢鍐呭涓衡€?span style="font-family: 'Times New Roman';">Hello world!鈥濓紝鍔犲瘑涔嬪悗灏嗗瘑鏂囦繚瀛樺埌鍙︿竴涓枃浠?span style="font-family: 'Times New Roman';">des.txt涓紝绋嬪簭杩愯鍚庝繚瀛樺湪鏂囦欢涓殑瀵嗘枃涓衡€?span style="font-family: 'Times New Roman';">233364062325鈥濄€傚湪鍔犲瘑绫?span style="font-family: 'Times New Roman';">CipherMachine涓紝閲囩敤姹傛ā杩愮畻瀵规槑鏂囪繘琛屽姞瀵嗭紝灏嗘槑鏂囦腑鐨勬瘡涓€涓瓧绗﹂櫎浠ヤ竴涓暣鏁帮紙鏈緥涓负7锛屽彲浠ョ敱鐢ㄦ埛鏉ヨ繘琛岃缃級鍚庡彇浣欐暟浣滀负瀵嗘枃銆?/span>
聽
4.聽鎶借薄澶栬绫?/h2>
聽聽聽聽聽聽鍦ㄦ爣鍑嗙殑澶栬妯″紡缁撴瀯鍥句腑锛屽鏋滈渶瑕佸鍔犮€佸垹闄ゆ垨鏇存崲涓庡瑙傜被浜や簰鐨勫瓙绯荤粺绫伙紝蹇呴』淇敼澶栬绫绘垨瀹㈡埛绔殑婧愪唬鐮侊紝杩欏皢杩濊儗寮€闂師鍒欙紝鍥犳鍙互閫氳繃寮曞叆鎶借薄澶栬绫?/span>鏉ュ绯荤粺杩涜鏀硅繘锛屽湪涓€瀹氱▼搴︿笂鍙互瑙e喅璇ラ棶棰樸€傚湪寮曞叆鎶借薄澶栬绫讳箣鍚庯紝瀹㈡埛绔彲浠ラ拡瀵规娊璞″瑙傜被杩涜缂栫▼锛屽浜庢柊鐨勪笟鍔¢渶姹傦紝涓嶉渶瑕佷慨鏀瑰師鏈夊瑙傜被锛岃€屽搴斿鍔犱竴涓柊鐨勫叿浣撳瑙傜被锛岀敱鏂扮殑鍏蜂綋澶栬绫绘潵鍏宠仈鏂扮殑瀛愮郴缁熷璞★紝鍚屾椂閫氳繃淇敼閰嶇疆鏂囦欢鏉ヨ揪鍒颁笉淇敼浠讳綍婧愪唬鐮佸苟鏇存崲澶栬绫荤殑鐩殑銆?/span>
聽聽聽聽聽 涓嬮潰閫氳繃涓€涓叿浣撳疄渚嬫潵瀛︿範濡備綍浣跨敤鎶借薄澶栬绫伙細
聽聽聽聽聽 濡傛灉鍦ㄥ簲鐢ㄥ疄渚嬧€滄枃浠跺姞瀵嗘ā鍧椻€濅腑闇€瑕佹洿鎹竴涓姞瀵嗙被锛屼笉鍐嶄娇鐢ㄥ師鏈夌殑鍩轰簬姹傛ā杩愮畻鐨勫姞瀵嗙被CipherMachine锛岃€屾敼涓哄熀浜庣Щ浣嶈繍绠楃殑鏂板姞瀵嗙被NewCipherMachine锛屽叾浠g爜濡備笅锛?/span>
- using聽System;聽聽
- 聽聽
- namespace聽FacadeSample聽聽
- {聽聽
- 聽聽聽聽class聽NewCipherMachine聽聽
- 聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽public聽string聽Encrypt(string聽plainText)聽聽聽
- 聽聽聽聽聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽Console.Write("鏁版嵁鍔犲瘑锛屽皢鏄庢枃杞崲涓哄瘑鏂囷細");聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽string聽es聽=聽"";聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽int聽key聽=聽10;//璁剧疆瀵嗛挜锛岀Щ浣嶆暟涓?0聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽char[]聽chars聽=聽plainText.ToCharArray();聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽foreach(char聽ch聽in聽chars)聽聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽int聽temp聽=聽Convert.ToInt32(ch);聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//灏忓啓瀛楁瘝绉讳綅聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if聽(ch聽>=聽'a'聽&&聽ch聽<=聽'z')聽{聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽temp聽+=聽key聽%聽26;聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if聽(temp聽>聽122)聽temp聽-=聽26;聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if聽(temp聽<聽97)聽temp聽+=聽26;聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//澶у啓瀛楁瘝绉讳綅聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if聽(ch聽>=聽'A'聽&&聽ch聽<=聽'Z')聽{聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽temp聽+=聽key聽%聽26;聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if聽(temp聽>聽90)聽temp聽-=聽26;聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if聽(temp聽<聽65)聽temp聽+=聽26;聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽es聽+=聽((char)temp).ToString();聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽}聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽Console.WriteLine(es);聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽return聽es;聽聽
- 聽聽聽聽聽聽聽聽}聽聽
- 聽聽聽聽}聽聽
- }聽聽
聽聽聽聽聽聽聽濡傛灉涓嶅鍔犳柊鐨勫瑙傜被锛屽彧鑳介€氳繃淇敼鍘熸湁澶栬绫?span style="font-family: 'Times New Roman';">EncryptFacade鐨勬簮浠g爜鏉ュ疄鐜板姞瀵嗙被鐨勬洿鎹紝灏嗗師鏈夌殑瀵?span style="font-family: 'Times New Roman';">CipherMachine绫诲瀷瀵硅薄鐨勫紩鐢ㄦ敼涓哄NewCipherMachine绫诲瀷瀵硅薄鐨勫紩鐢紝杩欒繚鑳屼簡寮€闂師鍒欙紝鍥犳闇€瑕侀€氳繃澧炲姞鏂扮殑澶栬绫绘潵瀹炵幇瀵瑰瓙绯荤粺瀵硅薄寮曠敤鐨勬敼鍙樸€?/span>
聽聽聽聽聽聽聽濡傛灉澧炲姞涓€涓柊鐨勫瑙傜被NewEncryptFacade鏉ヤ笌FileReader绫汇€?span style="font-family: 'Times New Roman';">FileWriter绫讳互鍙婃柊澧炲姞鐨?span style="font-family: 'Times New Roman';">NewCipherMachine绫昏繘琛屼氦浜掞紝铏界劧鍘熸湁绯荤粺绫诲簱鏃犻』鍋氫换浣曚慨鏀癸紝浣嗘槸鍥犱负瀹㈡埛绔唬鐮佷腑鍘熸潵閽堝EncryptFacade绫昏繘琛岀紪绋嬶紝鐜板湪闇€瑕佹敼涓?span style="font-family: 'Times New Roman';">NewEncryptFacade绫伙紝鍥犳闇€瑕佷慨鏀瑰鎴风婧愪唬鐮併€?/span>
聽聽聽聽聽聽聽濡備綍鍦ㄤ笉淇敼瀹㈡埛绔唬鐮佺殑鍓嶆彁涓嬩娇鐢ㄦ柊鐨勫瑙傜被鍛紵瑙e喅鏂规硶涔嬩竴鏄細寮曞叆涓€涓娊璞″瑙傜被锛屽鎴风閽堝鎶借薄澶栬绫荤紪绋嬶紝鑰屽湪杩愯鏃跺啀纭畾鍏蜂綋澶栬绫?/span>锛屽紩鍏ユ娊璞″瑙傜被涔嬪悗鐨勬枃浠跺姞瀵嗘ā鍧楃粨鏋勫浘濡傚浘5鎵€绀猴細
鍥?span style="font-family: 'Times New Roman';">5聽寮曞叆鎶借薄澶栬绫讳箣鍚庣殑鏂囦欢鍔犲瘑妯″潡缁撴瀯鍥?/span>
聽聽聽聽聽聽 鍦ㄥ浘5涓紝瀹㈡埛绫?span style="font-family: 'Times New Roman';">Client閽堝鎶借薄澶栬绫?span style="font-family: 'Times New Roman';">AbstractEncryptFacade杩涜缂栫▼锛?span style="font-family: 'Times New Roman';">AbstractEncryptFacade浠g爜濡備笅锛?/span>
- namespace聽FacadeSample聽聽
- {聽聽
- 聽聽聽聽abstract聽class聽AbstractEncryptFacade聽聽
- 聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽public聽abstract聽void聽FileEncrypt(string聽fileNameSrc,聽string聽fileNameDes);聽聽
- 聽聽聽聽}聽聽
- }聽聽
聽聽聽聽聽聽聽鏂板鍏蜂綋鍔犲瘑澶栬绫?span style="font-family: 'Times New Roman';">NewEncryptFacade浠g爜濡備笅锛?/span>
- namespace聽FacadeSample聽聽
- {聽聽
- 聽聽聽聽class聽NewEncryptFacade聽:聽AbstractEncryptFacade聽聽
- 聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽private聽FileReader聽reader;聽聽
- 聽聽聽聽聽聽聽聽private聽NewCipherMachine聽cipher;聽聽
- 聽聽聽聽聽聽聽聽private聽FileWriter聽writer;聽聽
- 聽聽
- 聽聽聽聽聽聽聽聽public聽NewEncryptFacade()聽聽
- 聽聽聽聽聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽reader聽=聽new聽FileReader();聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽cipher聽=聽new聽NewCipherMachine();聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽writer聽=聽new聽FileWriter();聽聽
- 聽聽聽聽聽聽聽聽}聽聽
- 聽聽
- 聽聽聽聽聽聽聽聽public聽override聽void聽FileEncrypt(string聽fileNameSrc,聽string聽fileNameDes)聽聽
- 聽聽聽聽聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽string聽plainStr聽=聽reader.Read(fileNameSrc);聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽string聽encryptStr聽=聽cipher.Encrypt(plainStr);聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽writer.Write(encryptStr,聽fileNameDes);聽聽
- 聽聽聽聽聽聽聽聽}聽聽
- 聽聽聽聽}聽聽
- }聽聽
聽聽聽聽聽聽聽閰嶇疆鏂囦欢App.config涓瓨鍌ㄤ簡鍏蜂綋澶栬绫荤殑绫诲悕锛屼唬鐮佸涓嬶細
- <?xml聽version="1.0"聽encoding="utf-8"聽?>聽聽
- <configuration>聽聽
- 聽聽<appSettings>聽聽
- 聽聽聽聽<add聽key="facade"聽value="FacadeSample.NewEncryptFacade"/>聽聽
- 聽聽</appSettings>聽聽
- </configuration>聽聽
聽聽聽聽聽聽聽瀹㈡埛绔祴璇曚唬鐮佷慨鏀瑰涓嬶細
- using聽System;聽聽
- using聽System.Configuration;聽聽
- using聽System.Reflection;聽聽
- 聽聽
- namespace聽FacadeSample聽聽
- {聽聽
- 聽聽聽聽class聽Program聽聽
- 聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽static聽void聽Main(string[]聽args)聽聽
- 聽聽聽聽聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽AbstractEncryptFacade聽ef;聽//閽堝鎶借薄澶栬绫荤紪绋?/span>聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽//璇诲彇閰嶇疆鏂囦欢聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽string聽facadeString聽=聽ConfigurationManager.AppSettings["facade"];聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽//鍙嶅皠鐢熸垚瀵硅薄聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽ef聽=聽(AbstractEncryptFacade)Assembly.Load("FacadeSample").聽CreateInstance聽(facadeString);聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽ef.FileEncrypt("src.txt",聽"des.txt");聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽Console.Read();聽聽
- 聽聽聽聽聽聽聽聽}聽聽
- 聽聽聽聽}聽聽
- }聽聽
聽聽聽聽聽聽 缂栬瘧骞惰繍琛岀▼搴忥紝杈撳嚭缁撴灉濡備笅锛?/span>
聽
璇诲彇鏂囦欢锛岃幏鍙栨槑鏂囷細Hello world! 鏁版嵁鍔犲瘑锛屽皢鏄庢枃杞崲涓哄瘑鏂囷細Rovvy gybvn! 淇濆瓨瀵嗘枃锛屽啓鍏ユ枃浠躲€?/span> |
聽
聽
聽聽聽聽聽聽 鍘熸湁澶栬绫?span style="font-family: 'Times New Roman';">EncryptFacade涔熼渶浣滀负鎶借薄澶栬绫?span style="font-family: 'Times New Roman';">AbstractEncryptFacade绫荤殑瀛愮被锛屾洿鎹㈠叿浣撳瑙傜被鏃跺彧闇€淇敼閰嶇疆鏂囦欢锛屾棤椤讳慨鏀规簮浠g爜锛岀鍚堝紑闂師鍒欍€?/span>
聽
5.聽澶栬妯″紡鏁堟灉涓庨€傜敤鍦烘櫙
聽聽聽聽聽聽 澶栬妯″紡鏄竴绉嶄娇鐢ㄩ鐜囬潪甯搁珮鐨勮璁℃ā寮忥紝瀹冮€氳繃寮曞叆涓€涓瑙傝鑹叉潵绠€鍖栧鎴风涓庡瓙绯荤粺涔嬮棿鐨勪氦浜掞紝涓哄鏉傜殑瀛愮郴缁熻皟鐢ㄦ彁渚涗竴涓粺涓€鐨勫叆鍙o紝浣垮瓙绯荤粺涓庡鎴风鐨勮€﹀悎搴﹂檷浣庯紝涓斿鎴风璋冪敤闈炲父鏂逛究銆傚瑙傛ā寮忓苟涓嶇粰绯荤粺澧炲姞浠讳綍鏂板姛鑳斤紝瀹冧粎浠呮槸绠€鍖栬皟鐢ㄦ帴鍙c€傚湪鍑犱箮鎵€鏈夌殑杞欢涓兘鑳藉鎵惧埌澶栬妯″紡鐨勫簲鐢紝濡傜粷澶у鏁?span style="font-family: 'Times New Roman';">B/S绯荤粺閮芥湁涓€涓椤垫垨鑰呭鑸〉闈紝澶ч儴鍒?span style="font-family: 'Times New Roman';">C/S绯荤粺閮芥彁渚涗簡鑿滃崟鎴栬€呭伐鍏锋爮锛屽湪杩欓噷锛岄椤靛拰瀵艰埅椤甸潰灏辨槸B/S绯荤粺鐨勫瑙傝鑹诧紝鑰岃彍鍗曞拰宸ュ叿鏍忓氨鏄?span style="font-family: 'Times New Roman';">C/S绯荤粺鐨勫瑙傝鑹诧紝閫氳繃瀹冧滑鐢ㄦ埛鍙互蹇€熻闂瓙绯荤粺锛岄檷浣庝簡绯荤粺鐨勫鏉傜▼搴︺€傛墍鏈夋秹鍙婂埌涓庡涓笟鍔″璞′氦浜掔殑鍦烘櫙閮藉彲浠ヨ€冭檻浣跨敤澶栬妯″紡杩涜閲嶆瀯銆?/span>
聽
5.1 妯″紡浼樼偣
聽聽聽聽聽聽 澶栬妯″紡鐨勪富瑕佷紭鐐瑰涓嬶細
聽聽聽聽聽聽 (1)聽瀹冨瀹㈡埛绔睆钄戒簡瀛愮郴缁熺粍浠讹紝鍑忓皯浜嗗鎴风鎵€闇€澶勭悊鐨勫璞℃暟鐩紝骞朵娇寰楀瓙绯荤粺浣跨敤璧锋潵鏇村姞瀹规槗銆傞€氳繃寮曞叆澶栬妯″紡锛屽鎴风浠g爜灏嗗彉寰楀緢绠€鍗曪紝涓庝箣鍏宠仈鐨勫璞′篃寰堝皯銆?/span>
聽聽聽聽聽聽 (2)聽瀹冨疄鐜颁簡瀛愮郴缁熶笌瀹㈡埛绔箣闂寸殑鏉捐€﹀悎鍏崇郴锛岃繖浣垮緱瀛愮郴缁熺殑鍙樺寲涓嶄細褰卞搷鍒拌皟鐢ㄥ畠鐨勫鎴风锛屽彧闇€瑕佽皟鏁村瑙傜被鍗冲彲銆?/span>
聽聽聽聽聽聽聽(3)聽涓€涓瓙绯荤粺鐨勪慨鏀瑰鍏朵粬瀛愮郴缁熸病鏈変换浣曞奖鍝嶏紝鑰屼笖瀛愮郴缁熷唴閮ㄥ彉鍖栦篃涓嶄細褰卞搷鍒板瑙傚璞°€?/span>
聽
5.2 妯″紡缂虹偣
聽聽聽聽聽聽 澶栬妯″紡鐨勪富瑕佺己鐐瑰涓嬶細
聽聽聽聽聽聽 (1)聽涓嶈兘寰堝ソ鍦伴檺鍒跺鎴风鐩存帴浣跨敤瀛愮郴缁熺被锛屽鏋滃瀹㈡埛绔闂瓙绯荤粺绫诲仛澶鐨勯檺鍒跺垯鍑忓皯浜嗗彲鍙樻€у拰鐏垫椿 鎬с€?/span>
聽聽聽聽聽聽 (2)聽濡傛灉璁捐涓嶅綋锛屽鍔犳柊鐨勫瓙绯荤粺鍙兘闇€瑕佷慨鏀瑰瑙傜被鐨勬簮浠g爜锛岃繚鑳屼簡寮€闂師鍒欍€?/span>
聽
5.3 妯″紡閫傜敤鍦烘櫙
聽聽聽聽聽聽 鍦ㄤ互涓嬫儏鍐典笅鍙互鑰冭檻浣跨敤澶栬妯″紡锛?/span>
聽聽聽聽聽聽 (1)聽褰撹涓鸿闂竴绯诲垪澶嶆潅鐨勫瓙绯荤粺鎻愪緵涓€涓畝鍗曞叆鍙f椂鍙互浣跨敤澶栬妯″紡銆?/span>
聽聽聽聽聽聽 (2)聽瀹㈡埛绔▼搴忎笌澶氫釜瀛愮郴缁熶箣闂村瓨鍦ㄥ緢澶х殑渚濊禆鎬с€傚紩鍏ュ瑙傜被鍙互灏嗗瓙绯荤粺涓庡鎴风瑙h€︼紝浠庤€屾彁楂樺瓙绯荤粺鐨勭嫭绔嬫€у拰鍙Щ妞嶆€с€?/span>
聽聽聽聽聽聽 (3)聽鍦ㄥ眰娆″寲缁撴瀯涓紝鍙互浣跨敤澶栬妯″紡瀹氫箟绯荤粺涓瘡涓€灞傜殑鍏ュ彛锛屽眰涓庡眰涔嬮棿涓嶇洿鎺ヤ骇鐢熻仈绯伙紝鑰岄€氳繃澶栬绫诲缓绔嬭仈绯伙紝闄嶄綆灞備箣闂寸殑鑰﹀悎搴︺€?/span>