For investors
股價(jià):
5.36 美元 %For investors
股價(jià):
5.36 美元 %認(rèn)真做教育 專心促就業(yè)
今天看到一個(gè)園子里的朋友寫了一篇ASP.NET的適配器設(shè)計(jì)模式的文章。其中提到了把輸入的電壓轉(zhuǎn)換成燈泡適合的電壓,這樣才能使燈泡正常工作。正巧,我也在學(xué)習(xí)設(shè)計(jì)模式,其中翻看了一下秦小波寫的《設(shè)計(jì)模式與禪》這本書,其中提到了設(shè)計(jì)模式的定義為:
將一個(gè)類的接口變成客戶端所期待的另一種接口,從而使原本因接口不匹配而無法在一起工作的兩個(gè)類能夠一起工作。
適配器模式又叫變壓器模式,也叫包裝模式。
這里作者舉得例子并沒有實(shí)現(xiàn)把一個(gè)接口或類轉(zhuǎn)換到另外一個(gè)可以使用的類,僅僅是把輸入?yún)?shù)做了判斷,這是不是適配器模式我不予置評(píng),下面貼出我實(shí)現(xiàn)的適配器模式。
我們知道,中國的電壓是220V,而日本的電壓為110V,我們中國生產(chǎn)的電燈泡一般額定電壓為220V,如果想要這個(gè)燈泡在日本能夠正常工作就必須使用一個(gè)適配器,把110V電壓轉(zhuǎn)換成220V電壓。
定義接口代碼如下:
1.using System;
2.using System.Collections.Generic;
3.using System.Linq;
4.using System.Text;
5.
6.namespace HelloWorld
7.{
8. ///
9. /// 中國電接口
10. ///
11. public interface IChinaElectricity
12. {
13. ///
14. /// 電壓
15. ///
16. ///
17. int Voltage();
18. }
19. ///
20. /// 日本電接口
21. ///
22. public interface IJapanElectricity
23. {
24. ///
25. /// 電壓
26. ///
27. ///
28. int Voltage();
29. }
30. ///
31. /// 燈接口
32. ///
33. public interface IChinaLight
34. {
35. ///
36. /// 發(fā)光
37. ///
38. ///
39. string Light(int voltage);
40. }
41.}
定義的類如下:
1.using System;
2.using System.Collections.Generic;
3.using System.Linq;
4.using System.Text;
5.
6.namespace HelloWorld
7.{
8. public class ChinaElectricity : IChinaElectricity
9. {
10. public int Voltage()
11. {
12. return 220;
13. }
14. }
15.
16. public class JapanElectricity : IJapanElectricity
17. {
18. public int Voltage()
19. {
20. return 110;
21. }
22. }
23.
24. public class ChinaLight : IChinaLight
25. {
26. ///
27. /// 發(fā)光
28. ///
29. ///
30. public string Light(int voltage)
31. {
32. if (voltage == 220)
33. {
34. return "我發(fā)光啦....";
35. }
36. else
37. {
38. return ("電壓不正確,無法正常工作...");
39. }
40. }
41. }
42. ///
43. /// 定義一個(gè)電壓適配器
44. ///
45. public class ElectricityAdapter : IChinaElectricity
46. {
47. private int voltage = 0;
48. private IJapanElectricity iJElectricity = null;
49.
50. public ElectricityAdapter(IJapanElectricity _baseElectricity)
51. {
52. iJElectricity = _baseElectricity;
53. voltage = this.iJElectricity.Voltage();
54. }
55. public int Voltage()
56. {
57. return voltage + 110;
58. }
59. }
60.}
【免責(zé)聲明】本文部分系轉(zhuǎn)載,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé)。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)?jiān)?0日內(nèi)與聯(lián)系我們,我們會(huì)予以更改或刪除相關(guān)文章,以保證您的權(quán)益!