成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Win8.1應(yīng)用開(kāi)發(fā)之適配器模式(C#實(shí)現(xiàn))

移動(dòng)開(kāi)發(fā)
實(shí)際 上適配器模式是用于解耦。設(shè)想一下我們的程序模塊A在與模塊B打交道時(shí),需要在許多地方多次使用B中某個(gè)類的方法,而負(fù)責(zé)開(kāi)發(fā)B的程序猿Tom還未完全實(shí) 現(xiàn)該類,會(huì)隨時(shí)更改該類中的方法,那么當(dāng)Tom在修改時(shí),負(fù)責(zé)A的攻城獅Jerry不得不進(jìn)行苦逼的修改。聰明的項(xiàng)目經(jīng)理Dabao想出了好方法——適配器模式。

實(shí)際上適配器模式是用于解耦。設(shè)想一下我們的程序模塊A在與模塊B打交道時(shí),需要在許多地方多次使用B中某個(gè)類的方法,而負(fù)責(zé)開(kāi)發(fā)B的程序猿Tom還未完全實(shí) 現(xiàn)該類,會(huì)隨時(shí)更改該類中的方法,那么當(dāng)Tom在修改時(shí),負(fù)責(zé)A的攻城獅Jerry不得不進(jìn)行苦逼的修改。聰明的項(xiàng)目經(jīng)理Dabao想出了好方法——適配器模式,于是在Tom和Jerry之間進(jìn)行了如下設(shè)計(jì):

  1. /// <summary> 
  2.    /// B中目前只定義了英雄KASS 
  3.    /// </summary> 
  4.    public class KASS 
  5.    { 
  6.        public void R() 
  7.        { 
  8.            //KASS的技能 
  9.        } 
  10.    } 
  11.  
  12.  
  13.        /// <summary> 
  14.    /// 定義英雄的接口 
  15.    /// </summary> 
  16.    public class Hero 
  17.    { 
  18.        /// <summary> 
  19.        /// 使用virtual修飾以便子類可以重寫 
  20.        /// </summary> 
  21.        public virtual void attack() 
  22.        { 
  23.            //英雄進(jìn)攻的方法和招數(shù) 
  24.        } 
  25.    } 
  26.  
  27.  
  28.    /// <summary> 
  29.    /// 定義適配器 
  30.        /// B暫時(shí)提供英雄KASS 
  31.    /// </summary> 
  32.    public class HeroAdapter:Hero 
  33.    { 
  34.        // 建立一個(gè)私有的英雄KASS對(duì)象 
  35.        private KASS kass = new KASS(); 
  36.  
  37.        /// <summary> 
  38.        /// 通過(guò)重寫,表面上調(diào)用attack()方法,實(shí)際調(diào)用R() 
  39.        /// </summary> 
  40.        public override void attack() 
  41.        { 
  42.            kass.R(); 
  43.        } 
  44.    } 
  45.        
  46.        
  47.        /// <summary> 
  48.    /// Tom負(fù)責(zé)的模塊A 
  49.    /// </summary> 
  50.        public class A 
  51.    { 
  52.        public static void Main(string[] args) 
  53.        { 
  54.            // A需要借助B中的英雄完成進(jìn)攻的任務(wù),但B還未定下是那個(gè)英雄,所以不能直接創(chuàng)建特定英雄的對(duì)象 
  55.                        // 但我們知道肯定要一個(gè)英雄,并且需要這個(gè)英雄去進(jìn)攻 
  56.            Hero hero = new HeroAdapter(); 
  57.            hero.attack(); 
  58.  
  59.            //... 
  60.        } 
  61.    } 

這樣 有一天B將KASS替換成另一個(gè)英雄后,A不需要進(jìn)行任何改動(dòng),只要將適配器HeroAdapter中的英雄替換為B修改后的新英雄,并將attack方 法中的實(shí)現(xiàn)換成新英雄的技能即可。任A多次使用英雄,最終只需修改一個(gè)適配器即可,這就實(shí)現(xiàn)了A和B的解耦。實(shí)際上我認(rèn)為適配器的另一個(gè)作用是擔(dān)當(dāng)了A和 B之間溝通的橋梁:HeroAdapter出現(xiàn)在A中,同時(shí)HeroAdapter中包含B中的元素。負(fù)責(zé)B的Tom通過(guò)適配器明白他創(chuàng)建的英雄要能夠完 成A中進(jìn)攻的任務(wù)。

這里再舉一個(gè)實(shí)際開(kāi)發(fā)的例子進(jìn)一步探討一下適配器模式。

Win8.1 Metro開(kāi)發(fā)中,XAML綁定了一個(gè)對(duì)象University

  1. using demo02.Helper; 
  2. using System; 
  3. using System.Collections.Generic; 
  4. using System.Collections.ObjectModel; 
  5. using System.Linq; 
  6. using System.Text; 
  7. using System.Threading.Tasks; 
  8.  
  9. namespace demo02.DataModel 
  10.  
  11.         public class University : Base 
  12.         { 
  13.           
  14.             public University(String id, String name, String summary, String imagePath, String category, double stars, String tileImagePath) 
  15.                 : base(id, name, summary, imagePath) 
  16.             { 
  17.                 this.Category = category; 
  18.                 this.Stars = stars; 
  19.                 this.Projects = new ObservableCollection<Project>(); 
  20.                 this.Images = new ImageHelper(); 
  21.                 this.TileImagePath = tileImagePath; 
  22.             } 
  23.  
  24.             public string TileImagePath { getset; } 
  25.             public string Category { getset; } 
  26.             public double Stars { getset; } 
  27.             public ObservableCollection<Project> Projects { getset; } 
  28.  
  29.             public int ClickTimes { getset; } 
  30.             //兼容 
  31.             public ImageHelper Images { getset; } 
  32.  
  33.         } 
  34.  

我會(huì)向服務(wù)器請(qǐng)求該對(duì)象的JSON形式,服務(wù)器端根據(jù)大學(xué)Id將大 學(xué)信息找到后組織到自己定義的類中,由于XAML綁定的緣故,我無(wú)法直接使用服務(wù)器端自己定義的類形式,這勢(shì)必要經(jīng)過(guò)一道工序,將服務(wù)器端的類形式轉(zhuǎn)化為 我需要的類形式,這就好比外國(guó)朋友電器的插頭不能適應(yīng)我們國(guó)家的插座,那就需要一個(gè)適配器,通過(guò)適配器插到我們的插座上。其實(shí)上面的大學(xué)類就相當(dāng)于這個(gè)適 配器,我將這個(gè)類告知負(fù)責(zé)服務(wù)器端開(kāi)發(fā)的隊(duì)友,他根據(jù)這個(gè)類的形式重新組織要發(fā)送的JSON。而我這邊不需要再進(jìn)行轉(zhuǎn)化。

責(zé)任編輯:閆佳明 來(lái)源: wp.662p
相關(guān)推薦

2024-07-31 10:41:16

C#設(shè)計(jì)模式

2013-02-26 10:55:47

C#適配器設(shè)計(jì)模式

2021-02-18 08:39:28

設(shè)計(jì)模式場(chǎng)景

2012-05-16 17:22:11

Java設(shè)計(jì)模式

2020-10-25 08:56:21

適配器模式

2021-08-16 17:15:19

設(shè)計(jì)模式Android適配器模式

2024-04-10 12:27:43

Python設(shè)計(jì)模式開(kāi)發(fā)

2013-11-26 16:39:21

Android設(shè)計(jì)模式

2012-04-12 09:33:02

JavaScript

2022-02-18 17:21:29

適配器模式客戶端

2022-02-13 23:33:24

設(shè)計(jì)模式Java

2013-11-19 12:23:42

Windows 8.1PC

2012-09-19 15:29:26

Worklight適配器

2009-11-18 18:08:20

PHP適配器模式

2024-02-22 12:13:49

適配器模式代碼

2012-08-02 10:46:34

JavaAdapter模式

2021-02-16 08:16:09

適配器模式MybatisJava

2011-04-28 09:54:50

jQuery

2025-06-05 01:45:00

Spring框架適配器

2013-10-29 10:19:56

Windows RT Surface
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 中文字幕在线免费观看 | 国产三区视频在线观看 | 草在线 | 在线观看亚洲精品 | 欧美中文| 婷婷福利视频导航 | 亚洲国产精品久久久久秋霞不卡 | 一本久久a久久精品亚洲 | 国产伦精品一区二区三区照片91 | 中文一区二区 | 久久精品中文字幕 | 最新午夜综合福利视频 | 九九热精品视频 | 91玖玖 | 麻豆精品一区二区三区在线观看 | 日韩国产在线 | 欧美日韩国产中文字幕 | 国产精品一区二区无线 | 国产成人精品免费视频大全最热 | 国产清纯白嫩初高生在线播放视频 | 男女羞羞视频在线看 | 亚洲视频中文字幕 | 国产精品高潮呻吟久久av黑人 | 男女爱爱网站 | 日韩有码在线播放 | 欧美精品综合 | 日美女逼逼 | 日韩精品1区2区3区 成人黄页在线观看 | 亚洲成人在线网 | 色综合一区二区 | 日本一区视频在线观看 | 在线观看一区 | 国产999精品久久久 午夜天堂精品久久久久 | 国产免费一区二区 | www.亚洲一区二区三区 | 我爱操| 亚洲一区二区三区四区五区中文 | 国产美女永久免费无遮挡 | 久久久久香蕉视频 | 97久久精品午夜一区二区 | 亚洲欧美综合 |