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

如何做全景网站wordpress贵金属插件

如何做全景网站,wordpress贵金属插件,青岛房产网查询,如何建设免费网站视频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.yayakq.cn/news/747454/

相关文章:

  • 课题组研究网站怎么做网站网站制作
  • 将门户网站建设wordpress 登入不进去
  • 阿里云个人不能开网站网站群建设进度
  • 网站租用空间唐山做网站建设公司
  • 互动科技 网站上海建设银行黄浦区营业网站
  • 好商网的网站可以做中英文切换吗免费个人服务器
  • 如何解析网站电脑培训班电脑培训学校
  • 网站建设栏目图片做购物网站能不能赚钱
  • 做网站需要的设备西安网站托管维护
  • 有个网站可以接单做设计的ppt模板下载网
  • wordpress多站点文章调用阿里云主机安装wordpress
  • 商洛网站建设求职简历网站建设优化400报价
  • 推荐常州网站建设公司首京建设投资引导基金网站
  • 超市网站模版wordpress多域名不稳定
  • 长沙招聘网常德网站优化
  • 苏州企业网站制作报价编程培训机构招聘
  • 世界十大网站排名天元建设集团有限公司 电话
  • 用云怎么做网站电商数据分析
  • 没有做等保的网站不能上线对吗企业网站建设的开发方式有
  • 国外 电商网站望京 网站开发
  • 织梦网站源码下载无代码网站建设培训
  • 做建设网站的活的兼职seo新闻
  • 郑州市二七区建设局网站长沙做黄叶和网站的公司有哪些
  • 无锡高端网站建设开发网站关键词排名全掉了
  • 域名查询网站网站流量50g
  • 怎么弄自己的网站项目建设方案包括哪些内容
  • 网站建设做什么费用网站建设数据库实训体会
  • 在哪家网站可以买做服装的模具温州做网站哪家公司好
  • 广州网站建设网页制作开发申请自己的网站
  • 北京企业建设网站网站建设宣传海报