当前位置: 首页 > news >正文

外贸网站设计制作优化推广下载班级优化大师

外贸网站设计制作优化推广,下载班级优化大师,广东深圳疫情最新情况风险等级,中国外协加工网免费Unity实现设计模式——适配器模式 适配器模式又称为变压器模式、包装模式(Wrapper) 将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 在一个在役的项目期望在原有接口的基础…

Unity实现设计模式——适配器模式

适配器模式又称为变压器模式、包装模式(Wrapper) 将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
在一个在役的项目期望在原有接口的基础上拓展,那么适配器模式是最适合的。 即需要使用一个已有或新建的类,但这个类又不符合系统的接口,则可以使用适配器模式。

client:需要使用适配器的对象,不需要关心适配器内部的实现,只对接目标角色。
Target:目标角色,和client直接对接,定义了client需要用到的功能。
Adaptee:需要被进行适配的对象。
Adapter:适配器,负责将源对象转化,给client做适配。

在这里插入图片描述
下面还是使用两个例子来说明适配器模式

(一)使用比较抽象的例子来说明

1.Target

class Target
{public virtual void Request(){Debug.Log("Called Target Request()");}
}

2.Adaptee

class Adaptee
{public void SpecificRequest(){Debug.Log("Called SpecificRequest()");}
}

可以看到目标对象和待适配对象并不匹配
使用适配器来让二者联系起来

3.Adapter

class Adapter : Target
{private Adaptee _adaptee = new Adaptee();public override void Request(){// Possibly do some other work//  and then call SpecificRequest_adaptee.SpecificRequest();}
}

4.测试

public class AdapterStructure : MonoBehaviour
{void Start( ){// Create adapter and place a requestTarget target = new Adapter();target.Request();}
}

可以发现两个无关的类很自然的就联系起来了!

(二)使用具体的例子来说明

现在有敌方攻击者的基类,派生出了敌方坦克,同时有敌方机器人但是机器人的接口和敌方攻击者的接口不同,我们需要进行适配

1. IEnemyAttacker

    public interface IEnemyAttacker{void FireWeapon();void DriveForward();void AssignDriver(string driver);}

2. EnemyTank

    public class EnemyTank : IEnemyAttacker{public void FireWeapon(){int attackDamage = Random.Range(1, 10);Debug.Log("Enemy Tank does " + attackDamage + " damage");}public void DriveForward(){int movement = Random.Range(1, 5);Debug.Log("Enemy Tank moves " + movement + " spaces");}public void AssignDriver(string driver){Debug.Log(driver + " is driving the tank");}}

3. EnemyRobot

    public class EnemyRobot{public void SmashWithHands(){int attackDamage = Random.Range(1, 10);Debug.Log("Robot causes " + attackDamage + " damage with it hands");}public void WalkForward(){int movement = Random.Range(1, 3);Debug.Log("Robot walks " + movement + " spaces");}public void ReactToHuman(string driverName){Debug.Log("Robot tramps on " + driverName);}}

可以看出这里不同,当然可以对EnemyRobot派生自IEnemyAttacker接口,然后重新实现接口,但是在多人协作的场景,这样是不允许的。同时该类可能在别处引用,显然有很大的工作量要修改。

4. EnemyRobotAdaper

    public class EnemyRobotAdaper : IEnemyAttacker{EnemyRobot robot;public EnemyRobotAdaper(EnemyRobot robot){this.robot = robot;}public void FireWeapon(){robot.SmashWithHands();}public void DriveForward(){robot.WalkForward();}public void AssignDriver(string driver){robot.ReactToHuman(driver);}}

5.测试

    public class AdapterPatternExample2 : MonoBehaviour{void Start(){IEnemyAttacker tank = new EnemyTank();EnemyRobot fredTheRobot = new EnemyRobot();IEnemyAttacker adapter = new EnemyRobotAdaper(fredTheRobot);fredTheRobot.ReactToHuman("Hans");fredTheRobot.WalkForward();tank.AssignDriver("Frank");tank.DriveForward();tank.FireWeapon();adapter.AssignDriver("Mark");adapter.DriveForward();adapter.FireWeapon();}}
http://www.zhongyajixie.com/news/49850.html

相关文章:

  • 做建材外贸哪个网站比较好什么软件推广效果好
  • 沈阳男科医院在哪百度sem优化师
  • crm系统有哪些seo排名是什么
  • 网站开发建设合同范本西安市seo排名按天优化
  • 安徽网站排名杭州全网推广
  • 延边州住房城乡建设局网站最靠谱的十大教育机构
  • 创意网站布局全国疫情最新信息
  • 做网站的公司没给做好能起诉吗代做百度关键词排名
  • wordpress 500ms网站优化公司上海
  • 巩义网站建设案例课堂百度推广的费用
  • 购买完域名后怎么做网站网络营销的含义
  • 嘉兴网站建设哪家好最近在线直播免费观看
  • 做自由行的网站好百度上广告怎么搞上去的
  • 不用写代码做的网站进行seo网站建设
  • 教师做课题可以参考什么网站网站源码交易平台
  • wordpress视频苹果手机泉州百度首页优化
  • 律所网站方案提高百度搜索排名
  • 自己做网站 服务器江门网站定制多少钱
  • 湖南响应式官网建设哪家好seo培训机构排名
  • 嘉兴企业网络营销推广平台seo优化轻松seo优化排名
  • 国外平面设计欣赏网站互联网推广运营是做什么的
  • 济南网站设计seo服务包括哪些
  • ajax网站开发技术郑州厉害的seo优化顾问
  • 政府网站设计思路广州百度seo
  • 扬中网seo案例分析方案
  • 易语言做电影网站源码辽阳网站seo
  • 做网站要身份证吗卢松松外链工具
  • 网站首页加浮动窗口seo排名优化是什么意思
  • 烟台专业网站推广北京百度seo排名公司
  • 找国外公司做网站公司网页怎么做