I'm curious what would be the best design pattern to use in the following implementation: **I'm creating a small application to download an image from a website and set it as my background.**

I want to interface with a website to download an XML `Background.xml` file and also download another file (`Background.bmp`) which is hosted on this remote server. The file is a bitmap and the XML is metadata about the bitmap. After I download the file I would like to set it as my background. I would like to separate the file downloading code from the background setting code but I'm not sure which design pattern I would use.

This seems like a typical presentation/data/business application with the Form being the presentation layer, the background setter/XML parser being the business layer, and the downloader being the data layer. But I wasn't sure which design pattern I would use for the actual data access since it would be from a website and not a database (so DAO is possibly not right for this). I've also shopped the design patterns on [Wikipedia](http://en.wikipedia.org/wiki/Software_design_pattern) but nothing seemed right. Is this something I could use MVC for?

**Data Layer**

```
public class DataLayer {
    public void DownloadFile() { 
        // download the file from http
    }
    public void GetXmlMetaData() { }
}

```

**Business Layer**

```
public class BusinessLayer {
    private static BusinessLayer m_instance = new BusinessLayer();  
    public static Instance BusinessLayer { get { return m_instance; }
    private BusinessLayer() { }

    public void SetNewWallpaper() { 
        // download the file from data layer
        // set it as the background
    }
    public String GetWallpaperInfo() { return String.Empty; }
}

```

**Presentation Layer**

```
public class PresentationLayer {
    public void HandleButtonClick(Object sender, EventArgs e) {
        BusinessLayer.Instance.SetNewWallpaper();
    }
}

```

How would I separate the data access portion from the background setting logic?