首页 > 其他 > 详细

装饰模式

时间:2016-01-01 01:55:49      阅读:198      评论:0      收藏:0      [点我收藏+]

UML图

技术分享

代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 杨家毅软件架构
{
abstract class MobilePhone
{
public abstract void SendMessage();
public abstract void Call();
public MobilePhone() { }
}
class Apple : MobilePhone
{
public Apple() : base() { }

public override void SendMessage()
{
Console.WriteLine("APPLE功能:发送信息");
}

public override void Call()
{
Console.WriteLine("APPLE功能:打电话");
}
}
class Mi : MobilePhone
{
public Mi() : base() { }

public override void SendMessage()
{
Console.WriteLine("MI功能:发送信息");
}

public override void Call()
{
Console.WriteLine("MI功能:打电话");
}
}

abstract class Function : MobilePhone
{
private MobilePhone _mobilephone;

public Function() : base() { }

public void Decorate(MobilePhone mobilephone)
{
_mobilephone = mobilephone;
}

public override void SendMessage()
{
_mobilephone.SendMessage();
}

public override void Call()
{
_mobilephone.Call();
}
}

class Bluetooth : Function
{
public Bluetooth() : base() { }

public override void SendMessage()
{
Connect();
}

public void Connect()
{
Console.WriteLine("添加蓝牙模块");
}
}

class GPS : Function
{
public GPS() : base() { }

public override void SendMessage()
{
Location();
}

public void Location()
{
string L = "宁大科院";
Console.WriteLine("添加GPS模块 当前位置:" + L);
}
}

class Camera : Function
{
public Camera() : base() { }

public override void SendMessage()
{
VCamera();
}

public void VCamera()
{
Console.WriteLine("添加视频模块");
}
}
class Program
{
static void Main(string[] args)
{
MobilePhone apple = new Apple();
Bluetooth bluethooh = new Bluetooth();
Camera camera = new Camera();
MobilePhone mi = new Mi();
apple.SendMessage();
apple.Call();
bluethooh.Decorate(apple);
bluethooh.SendMessage();
GPS gps = new GPS();
gps.Decorate(apple);
gps.SendMessage();
camera.Decorate(apple);
camera.SendMessage();
mi.SendMessage();
mi.Call();
bluethooh.Decorate(mi);
bluethooh.SendMessage();
gps.Decorate(mi);
gps.SendMessage();
camera.Decorate(mi);
camera.SendMessage();
}
}
}

运行结果

技术分享

装饰模式

原文:http://www.cnblogs.com/Yang-jy/p/5092885.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!