适配器模式(adapter)c#

适配器模式(adapter)c#简单例子

结合上回外观模式中的类,从外部引入mydll.dll类库中wemanplay类,其接口有属性stringMove 、 stringJump和行为wemanmove()、wemanjump(),采用适配器变为自己类中通用接口。

在外观模式中增加一个新类适配器

 public class addplay : play//由引类wemanplay类适配为现有play类
    {
        private wemanplay wplay;//引个已编译好的wemanplay类
        public   addplay()
        {
            wplay = new wemanplay();
        }
        public override void move()//将wemanplay类中wemanmove适配为现有类中move
        {
            wplay.wemanmove();
            movestring = wplay.stringMove; //属性stringMove适配为现有类中movestring;

        }
        public override void jump()//将wemanplay类中wemanjump适配为现有类中jump
        {
            wplay.wemanjump();
            jumpstring = wplay.stringJump;//属性stringJump适配为现有类中jumpstring;
        }

所有代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using mydll;//添加引用wemanplay类

namespace adapterpattern
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnDisplay_Click(object sender, EventArgs e)
        {
            facadeFactory ff = new facadeFactory();//外观模式隐藏了玩家,用户不知道有几个玩家
            ff.move();//实现外观功能1
            this.listBox1.Items.Add(ff.movestring);
            ff.jump();//实现外观功能2
            this.listBox1.Items.Add(ff.jumpstring);
        }

    }

    public abstract class play//对所有玩家进行抽象
    {
        public string movestring { get; set; }
        public string jumpstring { get; set; }
        public abstract void move();
        public abstract void jump();
    }
    public class play1 : play//玩家1
    {
        public override void move()
        {
            movestring = "play1 move";
        }
        public override void jump()
        {
            jumpstring = "play1 jump";
        }
    }
    public class play2 : play//玩家2
    {
        public override void move()
        {
            movestring = "play2 move";
        }
        public override void jump()
        {
            jumpstring = "play2 jump";
        }
    }
    public class addplay : play//由引类wemanplay类适配为现有play类
    {
        private wemanplay wplay;
        public   addplay()
        {
            wplay = new wemanplay();
        }
        public override void move()//将wemanplay类中wemanmove适配为现有类中move
        {
            wplay.wemanmove();
            movestring = wplay.stringMove; //属性stringMove适配为现有类中movestring;

        }
        public override void jump()//将wemanplay类中wemanjump适配为现有类中jump
        {
            wplay.wemanjump();
            jumpstring = wplay.stringJump;//属性stringJump适配为现有类中jumpstring;
        }
    }
    public class facadeFactory//外观模式工厂实现
    {
        public string movestring;
        public string jumpstring;
        List<play> plays = new List<play>();
        public facadeFactory()
        {
            plays.Add( new play1());
            plays.Add( new play2() );
            plays.Add(new addplay ());
        }
        public void move()//外观模式功能一:两个玩家组队一起移动
        {
            foreach (play playt in plays)
            {
                playt.move();
                movestring += playt.movestring;
            }
        }
        public void jump()//外观模式功能二:两个玩家组队一起跳跃
        {
            foreach (play playt in plays)
            {
                playt.jump();
                jumpstring += playt.jumpstring;
            }
        }
    }
}

文中引用的mydll.dll在这里下载http://yunpan.cn/cfwfiu7KzAkiZ  提取码 3d67

vs2010中c#中类库dll制作和引用方法

时间: 2024-08-27 01:48:25

适配器模式(adapter)c#的相关文章

设计模式 - 适配器模式(adapter pattern) 枚举器和迭代器 详解

适配器模式(adapter pattern) 枚举器和迭代器 详解 本文地址: http://blog.csdn.net/caroline_wendy 参考适配器模式(adapter pattern): http://blog.csdn.net/caroline_wendy/article/category/2281679 Java早期版本的枚举器(Enumeration)和现在的迭代器(Iterator) 可以使用适配器(adapter)进行转换. 适配器(adapter)代码: /** *

适配器模式--Adapter Pattern

模拟场景:很多人都喜欢看NBA吧,姚明进驻NBA,打开了中国的市场.虽然后面姚明在NBA打得还不错,但是在刚进入NBA篮坛的时候,并不是那么顺利的.语言交流就是一个最大的问题.刚开始打球期间,教练及队员的战术部署姚明都无法理解,所以他需要这么一个翻译者,将教练及队员的意思转达给姚明,这样才可以进行合作. 现在进行场景的模拟,先不考虑那么多.假如姚明一开始进入NBA的时候就已经会英语,可以进行交流了.那么这个时候教练就可以进行战术的部署了. 转换成类,所有的队员都要服从教练的战术要求,假设现在教练

设计模式之适配器模式(Adapter Pattern)

适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作. 1. 解决的问题 即Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作. 2. 模式中的角色 2.1 目标接口(Target):客户所期待的接口.目标可以是具体的或抽象的类,也可以是接口. 2.2 需要适配的类(Adaptee):需要适配的类或适配者类. 2.3 适配器(Adapter):通过包装一个需要适配的对象,把

研磨设计模式解析及python代码实现——(三)适配器模式(Adapter)

一.适配器模式定义 将一个类的接口转换成另外一个接口,适配器模式使得原本由于接口不兼容,而不能在一起工作的哪些类能够在一起工作. 二.python 实现 1 import string 2 import cPickle as p 3 import datetime 4 import os 5 class LogModel: 6 logId="" 7 operateUser="" 8 operateTime="" 9 logContent=&quo

Java设计模式之适配器模式(Adapter Pattern)

Adapter Pattern的作用是在不改变功能的前提下转换接口.Adapter分为两类,一类是Object Adapter, 另一类是Class Adapter.由于Class Adapter的实现需要用到多继承,而Java不支持多继承,所以这里只关注Object Adapter. 在JDK1.5之前是没有 java.util.Iterator 接口的,java.util.Enumeration 接口起着 Iterator 的作用.那么如果我们需要维护一些年代比较久远的代码,可能就会面临着没

设计模式 - 适配器模式(adapter pattern) 枚举器和迭代器 具体解释

适配器模式(adapter pattern) 枚举器和迭代器 具体解释 本文地址: http://blog.csdn.net/caroline_wendy 參考适配器模式(adapter pattern): http://blog.csdn.net/caroline_wendy/article/category/2281679 Java早期版本号的枚举器(Enumeration)和如今的迭代器(Iterator) 能够使用适配器(adapter)进行转换. 适配器(adapter)代码: /**

如何让孩子爱上设计模式 —— 7.适配器模式(Adapter Pattern)

如何让孩子爱上设计模式 -- 7.适配器模式(Adapter Pattern) 概念相关 定义: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而 使原本因接口不匹配而无法在一起工作的两个类能够在一起工作. 简单点说: 两个彼此间没有太大关联的类,想进行交互完成某些事情,如果 直接去修改各自的接口,就显得有些繁琐了,可以加个中间类, 用它来协调两类之间的关系,完成相关业务.这种玩法就叫适配器模式! 两种适配器模式: 根据适配器类与适配者类的关系不同,适配器模式可分为 类适配器 和 对

二十四种设计模式:适配器模式(Adapter Pattern)

适配器模式(Adapter Pattern) 介绍将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 示例有一个Message实体类,某个类对它的操作有Insert()和Get()方法.现在需要把这个类转到另一个接口,分别对应Add()和Select()方法. MessageModel using System; using System.Collections.Generic; using System.Text; name

设计模式之适配器模式(Adapter)摘录

23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象.创建型模式有两个不断出现的主旋律.第一,它们都将关于该系统使用哪些具体的类的信息封装起来.第二,它们隐藏了这些类的实例是如何被创建和放在一起的.整个系统关于这些对象所知道的是由抽象类所定义的接口.因此,创建型模式在什么被创建,谁创建它,它是怎样被创建的,以