根据XX对XX产生行为的方法

可以用委托来搞定

using System;
using System.Collections.Generic;
using System.Text;
using UnityEngine;

public delegate void u3d(string name);
   public class DM02Brridge:MonoBehaviour
    {
    private void Start()
    {
        u3d AA = new DirectX().Render ;
        Sphere l_Sphere = new Sphere();
        l_Sphere.Draw(new DirectX().Render);这样的话只需要添加新执行方法的话,new一下即可
        l_Sphere.Draw(new OpenGL().Render);
        Cube l_Cube = new Cube();
        l_Cube.Draw();
    }

}

public class Sphere //球体的类,有自己的属性
{
    public string name = "Sphere";
    public OpenGL openGL = new OpenGL();

    public void Draw(u3d AA)
    {
        AA(name);
    }
}
public class OpenGL//绘制的引擎
{
    public void Render(string name)
    {
        Debug.Log("OpenGL绘制了:" + name);
    }

}
public class Cube //球体的类,有自己的属性
{
    public string name = "Cube";
    public OpenGL openGL = new OpenGL();

    public void Draw()
    {
        openGL.Render(name);
    }
}
public class DirectX
{
    public void Render(string name)
    {
        Debug.Log("DrectX绘制了:" + name);
    }
}

也可以使用父类为接口继承的方法

using System;
using System.Collections.Generic;
using System.Text;
using UnityEngine;

public delegate void u3d(string name);
   public class DM02Brridge:MonoBehaviour
    {
    private void Start()
    {
        EngineSystem AA = new OpenGL();
        Cube BB = new Cube(AA);
        BB.Draw();
        AA = new DirectX();
        Sphere SP = new Sphere(AA);
        SP.Draw();
    }

}
public class IHshaPe
{
    public string name;
    public EngineSystem Eng;
    public IHshaPe(EngineSystem l_eng)
    {
        Eng = l_eng;
    }
    public void Draw()
    {
        Eng.DrawEng(name);
    }
}
public abstract class EngineSystem
{
    public abstract void DrawEng(string name);
}

public class Sphere : IHshaPe
{

    public Sphere(EngineSystem l_eng) : base(l_eng)
    {
        base.name = "Sphere";
    }
}
public class OpenGL:EngineSystem
{
    public override void DrawEng(string name)
    {
        Debug.Log("OpenGL绘制了:" + name);
    }

}
public class Cube:IHshaPe //球体的类,有自己的属性
{

    public Cube(EngineSystem l_eng) : base(l_eng)
    {
        name = "Cube";
    }

}
public class DirectX:EngineSystem
{
    public override void DrawEng(string name)
    {
        Debug.Log("DrectX绘制了:" + name);
    }
}
时间: 2025-01-15 05:41:24

根据XX对XX产生行为的方法的相关文章

如何使用Javah 生成C/C++头文件的误区 找不到 ‘XX.XXXX.XX.CLASSNAME’ 的类文件

PS:最近在用jni,一会写java一会写c++的感觉真让人头疼.然后在使用javah的时候,遇到了一点点小问题,分享给大家. javah 是一个很棒的工具,可以通过获取.class 文件,而生成对应的C++文件,其中包含java 代码中的所有本地方法的JNI 存根,也就是定义成native 的那些方法.如果你正在使用一个类的JNI 存根,而且你已经把这个类定义为包的一部分,那么必须要完全限定类的命名.感觉javah好像一个反编译工具一样.恩,就是这样. 举例说明,我在用eclipse编写一个j

elastic-job集成到springboot教程,和它的一个异常处理办法:Sharding item parameters '1' format error, should be int=xx,int=xx

先说这个Sharding item parameters '1' format error, should be int=xx,int=xx异常吧,这是在做动态添加调度任务的时候出现的,网上找了一会没有搜到任何信息,最后发现,是添加任务这个方法里有一个漏洞. 这个源码出自: 1 private ShardingItem parse(final String shardingItemParameter, final String originalShardingItemParameters) {

根据年月日,判断20XX年XX月XX日是 星期几

// 已知1999.12.31是周五 // 根据年月日,判断20XX年XX月XX日是 星期几 #include "stdio.h" unsigned int Year; unsigned int Month; unsigned int Day; //=============================================================================== //判断是否为闰年 //============================

Linux中两种脚本执行方式的区别:. xx 和 ./xx

今天继续在看Building Linux Embedded Systems一书,进入第四章,有一些实际的操作,其中在介绍了良好的组织架构(文件夹)后,建议些一个script可以进行不同的开发环境.里面很简单,包括一个export和cd的命令,这个脚本假设为 export PROJECT=/home/aaa/project1 cd $PROJECT 并取名字为 test 我执行$ ./test,发现没有效果,然后在里面增加两个跟踪语句,如下 export PROJECT=/home/aaa/pro

-XX:PermSize -XX:MaxPermSize 永久区参数设置

-XX:PermSize  -XX:MaxPermSize –设置永久区的初始空间和最大空间 -XX:PermSize 设置持久代(perm gen)初始值,物理内存的1/64 -XX:MaxPermSize 设置持久代最大值,物理内存的1/4 –他们表示,一个系统可以容纳多少个类型

error registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion' has value 'XX',but 'XX' is required 解决办法

这个错误很奇怪,很久之前出现过一次,已经忘记咋解决的了,今天特地记录下. 我机器上java有3个版本,1.6,1.7,1.8,环境变量JAVA_HOME是一直配的1.8为主要. 因为我3个版本对应的eclipse的eclipse.ini都设置了对应的路径指向,每个版本之前都是互不干扰,这两天要写点1.7版本的代码,不知道咋滴再打开1.6的eclipse就报这个错误了. 解决办法: 64位windows找到C:\Windows\SysWOW64 下有3个文件java.exe javaw.exe j

HTTPConnectionPool(host='xx.xx.xx.xx', port=xx): Max retries exceeded with url:(Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000015A25025EB8>...))

HTTPConnectionPool(host='xx.xx.xx.xx', port=xx): Max retries exceeded with url:(Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000015A25025EB8>, 'Connection to xx.xx.xx.xx timed out. (connect timeout=10)')) 网查说是http连接太

【BIRT】在页面上展示xxxx年xx月xx日

我们在做报表开发的时候经常会杜鳌一个问题,就是需要在报表上展示"xxxx年xx月xx日"这种日期,例如:需要在报表展示日期如下图: 我们现在数据库存储的日期是:20171231 那么我们如何转化为 这种日期类型呢? 我们可以使用BIRT的函数BIRTStr 假定:字段名为dtDate 那么我们的表达式为: BirtStr.left(dtDate,4)+'年'+BirtStr.right(BirtStr.left(dtDate,6),2)+'月'+BirtStr.right(dtDate

oracle计算两个时间的差值(XX天XX时XX分XX秒)

在工作中需要计算两个时间的差值,结束时间 - 开始时间,又不想在js里写function,也不想在java里去计算,干脆就在数据库做了一个函数来计算两个时间的差值.格式为XX天XX时XX分XX秒: 上代码: CREATE OR REPLACE FUNCTION F_GET_DIFF_TIME(START_TIME IN DATE, END_TIME IN DATE) RETURN VARCHAR2 IS DIFF_TIME VARCHAR2(50); BEGIN SELECT TDAY || '

MySql重装以后,修改数据库路径,打开以前的数据库报Table &#39;XX库.XX表&#39; doesn&#39;t exist错误的解决办法

因为mysql主流的数据库引擎有MyISAM和InnoDB两种, 如果是MyISAM,直接把以前数据库拷贝到修改后的路径是可以的 但是InnoDB因为存储结构不同,必须还得把备份的innodb数据库表“*.frm”文件和innodb数据“ibdata1”文件拷到修改后的合适路径 参考资料:http://www.bcty365.com/content-35-2928-1.html https://blog.csdn.net/dihuangtian01/article/details/5177353