一、两个设计原则:

原则一:找出应用中可能需要变化之处,把他们独立出来,不要和那些不需要变化的代码混在一起。

鸭子模型中展现是必须的,而且每个展现都不一样,所以可以在基类中定义一个抽象类。以便子类可以更好的重写。在鸭子模型中,飞和叫的行为是经常要发生改变的,而且是鸭子的行为,我们可以让其抽象为接口。从而为每一个类传递不同的飞和叫的行为。

原则二:面向接口编程,不要面向实现编程

面向接口编程的含义是:让接口作为鸭子的变量,具体的实现是一个继承接口的类。这样每个继承接口的类就可以达到了复用的效果。

二、动态改变鸭子的行为时,可以使用Setter,通过C#的多态来实现。

public class Duck{public IFly duckFly;public void SetFly(IFly fly){duckFly = fly;}}interface IFly{public void Fly();}

Head first 第一章相关推荐

  1. 王道考研 计算机网络笔记 第一章:概述计算机网络体系结构

    本文基于2019 王道考研 计算机网络: 2019 王道考研 计算机网络 个人笔记总结 后续章节将陆续更新- 目录 一.概念.功能.组成.分类 1. 计算机网络的概念 2. 计算机网络功能 3. 计算 ...

  2. 计算机组成原理-第一章

    计算机组成原理第一章概述 一.计算机系统概述 1. 定义 2.分类 3.计算机系统的抽象层次 二.计算机系统的组成 1.计算机系统的硬件组成 1.1冯.诺依曼计算机(重点) 1.2现代计算机结构 1. ...

  3. 山西农业大学c语言答案,第一章C语言及程序设计概述-东北农业大学教务处.doc...

    全国高等农林院校"十一五"规划教材 C语言程序设计 孙力 主编 中国农业出版社 内容简介 本书是全国高等农林院校"十一五"规划教材之一. 全书共11章,分别介绍 ...

  4. Python3-Cookbook总结 - 第一章:数据结构和算法

    第一章:数据结构和算法 Python 提供了大量的内置数据结构,包括列表,集合以及字典.大多数情况下使用这些数据结构是很简单的. 但是,我们也会经常碰到到诸如查询,排序和过滤等等这些普遍存在的问题. ...

  5. 《零成本实现Web自动化测试--基于Selenium》第一章 自动化测试基础

    第一篇 Selenium 和WebDriver工具篇 第一章 自动化测试基础 1.1    初识自动化测试 自动化测试有两种常见方式 1.1.1 代码驱动测试,又叫测试驱动开发(TDD) 1.1.2 ...

  6. 华南理工网络计算机基础知识,2019年华南理工大学网络教育计算机基础随堂练习第一章...

    2019年华南理工大学网络教育计算机基础随堂练习第一章 (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 第一章 计算机基础知识·第 ...

  7. CCNA 第一章 网际互联

    第一章 网际互联 路由器知识点: 1.默认时,路由器不转发任何广播包和组播包. 2.路由器使用逻辑地址,逻辑地址在网络层的包头中,用来决定将包转发到的下一跳路由器. 3.路由器可以使用管理员创建的访问 ...

  8. 2018-3-31(Nature-Inspired metaheuristic Algoritjms Second Edition第一章)笔记-优化,寻优,元启发式算法

    第一章-----Introduction' 1.1 一些歌概念: x:   design or decision variables 设计或决策变量 f(x) :Objective function ...

  9. Android项目驱动式开发教程 第2版,《Android项目驱动式开发教程》第一章开发入门.ppt...

    <Android项目驱动式开发教程>第一章开发入门 1.4 项目框架分析 4 android:versionName="1.0" > 5 8 第9行代码andro ...

  10. MinIO分布式专题(第一章、一文教你搭建MinIO单机版)

            市面上有很多的分布式存储方案,比如FastDFS,MongoDB,或者目前云厂商的存储 比如阿里云,腾讯云,华为云等等,但是对于很多企业不愿意上云,于是业内就出现了很多 的方案,而本章 ...

最新文章

  1. vim编辑文章后不能修改
  2. 8、Kubernetes核心技术Service
  3. [置顶] 我整理的一些常用网址
  4. flutter 人脸检测_【转载】opencv实现人脸检测
  5. ORACLE DBA的职责
  6. 很多优秀的软件公司和开发者为什么愿意开源和共享?
  7. Linux中点号,星号,加号,问号实战
  8. 什么是暗物质?有没有理科大神解答一下啊?
  9. 在mac上安装cgal4.11时,QT5 和qglviewer的设置
  10. 两台windows笔记本创建家庭组实现文件共享
  11. Android自定义View研究(六)--View中的原点坐标相关问题
  12. Excel宏去除汉字
  13. CountDownLatch、CyclicBarrier、Semaphore的区别
  14. java并发包并发队列
  15. 樊登读书会掌控读后感_在樊登读书会读《掌控习惯》(读后感)
  16. 海海软件DRM-X 4.0产品介绍
  17. 数据结构与算法实验01-使用链表实现多项式乘法
  18. Android 接收和收发短信
  19. ILM --interface logic model
  20. SQL基础1--select

热门文章

  1. 一个基于vue和element-ui的树形穿梭框组件
  2. 程序员菜鸟到高手的11个阶段,你处于哪个阶段?
  3. ROS机器人程序设计(原书第2版)3.1.2 ROS节点启动时调用gdb调试器
  4. BeanFactory和FactoryBean
  5. Atitit.判断元素是否显示隐藏在父元素 overflow
  6. Win7 64bit IIS无法访问ACCESS数据库解决方案
  7. 贪心算法——字典序最小问题
  8. Java String 类的方法
  9. 菜鸟的IT道路ing (一)
  10. 通过修改PHP源代码解决Nginx下WebShell跨站的问题