实体对象类

/// <summary>
/// Monster类“ has a”Breed类,Monster类是最后实例化出来最外层的实体,即便有新的Monster,Monster也不需要做修改。
/// </summary>
public class Monster
{private int health_;private Breed breed_;private string attack_;public Monster(Breed breed){health_ = breed.GetHealth();breed_ = breed;attack_ = breed.GetAttack();}public string GetAttack(){return attack_;}
具体实现功能类public void ShowAttack(){Debug.Log(attack_);}
}

具体实现功能类

/// <summary>
/// 品种类Breed
/// </summary>
public class Breed
{private int health_;private string attack_;Breed parent_;/// <summary>/// 构造函数/// </summary>/// <param name="parent">父类</param>/// <param name="health">生命值,填0表示从父类继承</param>/// <param name="attack">攻击表现</param>public Breed(Breed parent, int health, string attack){health_ = health;attack_ = attack;parent_ = null;//复制“代理”,在创建一个类型时将继承的特性复制到类的内部//注意我们不再需要parent类中的属性,一旦构造结束,就可以忘掉基类if (parent != null){parent_ = parent;//是0,从父层拿if (health == 0){health_ = parent.GetHealth();}//是null,从父层拿if (attack == null){attack_ = parent.GetAttack();}}
}public Monster NewMonster()
{return new Monster(this);
}public int GetHealth()
{return health_;
}public string GetAttack()
{return attack_;
}

}

测试主程序

using UnityEngine;
using System.Collections;public class TypeObjectPatternExample : MonoBehaviour
{void Start(){//创建种类,生命值填0表示从父类继承。Breed troll = new Breed(null, 25, "The troll hits you!");Breed trollArcher = new Breed(troll, 0, "The troll archer fires an arrow!");Breed trollWizard = new Breed(troll, 0, "The troll wizard casts a spell on you!");//通过种类创建monster对象Monster trollMonster = troll.NewMonster();trollMonster.ShowAttack();Monster trollArcherMonster = trollArcher.NewMonster();trollArcherMonster.ShowAttack();Monster trollWizardMonster = trollWizard.NewMonster();trollWizardMonster.ShowAttack();}}

转载自https://www.ctolib.com/Unity-Design-Pattern.html

C#设计模式学习(类型对象模式)相关推荐

  1. 设计模式学习之代理模式学习(一)

    设计模式学习之代理模式学习(一) 关于设计模式想必学习过Java语言的人都知道吧,当时对其进行深入学习的的人应该不是很多.在我看来设计方面的知识相比于框架应用配置等知识要有意思的多,并且设计模式的对一 ...

  2. Java设计模式学习 - 模版方法模式策略模式

    个人博客项目地址 希望各位帮忙点个star,给我加个小星星✨ 设计模式-模板方法&策略模式 简单介绍 模板方法模式(Template):定义一个操作中的算法的骨架,而将一些步骤延迟到子类中. ...

  3. 设计模式 - 学习笔记 - 工厂模式Factory Pattern

    设计模式 - 学习笔记 - 工厂模式Factory Pattern 1. 简单工厂 1.1 应用场景 1.2 UML 1.3 优劣分析 好处 缺点 1.4 代码示例 抽象产品 AbstractProd ...

  4. 设计模式学习----装饰器模式

    这两天本来是自在学习java collection Framework的Fail Fast底层机制,看到核心的部分时,突然意识到设计模式的问题,上大学到现在我还没有真正理解过设计模式的概念,于是用了大 ...

  5. PHP设计模式--数据访问对象模式

    最简单的Web部件和最复杂的在线电子商务Web站点具有一个共同点:它们都要处理数据.大量的编程都设计数据的访问和操作.随着Internet的发展.脸颊存储设备应用数据的大量增长.对分析论的更深入理解以 ...

  6. php7 空对象,PHP设计模式之空对象模式(Null Object)代码实例大全(26)

    目的 空对象模式不属于 GoF 设计模式,但是它作为一种经常出现的套路足以被视为设计模式.它具有如下优点: 客户端代码简单 可以减少报空指针异常的几率 测试用例不需要考虑太多条件 返回一个对象或 nu ...

  7. Java设计模式学习记录-解释器模式

    前言 这次介绍另一个行为模式,解释器模式,都说解释器模式用的少,其实只是我们在日常的开发中用的少,但是一些开源框架中还是能见到它的影子,例如:spring的spEL表达式在解析时就用到了解释器模式,以 ...

  8. 设计模式学习之访问者模式

    访问者模式,是行为型设计模式之一.访问者模式是一种将数据操作与数据结构分离的设计模式,它可以算是 23 中设计模式中最复杂的一个,但它的使用频率并不是很高,大多数情况下,你并不需要使用访问者模式,但是 ...

  9. 九大常用设计模式学习-装饰者模式

    设计模式学习记录:一句话+代码体会设计模式. 九大常用设计模式 单例模式:https://blog.csdn.net/qq_37902949/article/details/87903569 简单工厂 ...

  10. 设计模式学习之工厂模式(附demo)

    介绍 工厂模式(Factory Pattern) 是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在工厂模式中,我们在创建对象时不会对客户端暴 ...

最新文章

  1. java 无法取消引用_Java的新手,并出现错误“无法取消引用int” - java
  2. 利用OpenCV的SimpleBlobDetector检测图像的奇异区域(斑点)
  3. leetcode 之Remove Nth Node From End of List(19)
  4. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]48.TPM的目的和使用方法
  5. 数据装载全/存量直接装载到目标表_09
  6. bzoj1339[Baltic2008]Mafia*
  7. html定位 浏览器兼容,IE6浏览器不支持固定定位(position:fixed)解决方案
  8. VB6 如何连接MYSQL数据库
  9. motion加树莓派打造实时监控
  10. 胶水代码(glue code)的定义(粘合代码)
  11. 2.7 if应用:猜拳游戏
  12. ios dev关闭双重认证_iOS Dev Academy简短介绍(自动布局)
  13. 被封域名什么原因?如何预防域名被封呢?
  14. html样式在ie显示不全,IE下css常见问题总结及解决
  15. Web前端:中国环宇科技有限公司网页设计
  16. 【从零开始学AR】:开发工具选择与Unity安装(准备工作)
  17. 谷歌帮——中国最牛的创业帮派
  18. 10纳米服务器芯片,10nm,10纳米,有多少产品假汝名以行?
  19. IDEA的校园邮箱激活方式
  20. 一次性弄清 高通骁龙芯片最新产品线简介

热门文章

  1. Apache服务器+tomcat配置
  2. 搭建基于LAMP的web应用程序平台
  3. SVN与TortoiseSVN实战:冲突详解(二)
  4. Web网站压力测试工具
  5. 【引用】Java开发者的十大戒律
  6. prototype中的$H函数的用法
  7. 21.IO-multiplexing方式实现Netcat
  8. 20.第一个Netcat的实现
  9. HALCON 21.11:深度学习笔记---异常检测(9)
  10. OpenCV自动内存管理