Head first 第一章
一、两个设计原则:
原则一:找出应用中可能需要变化之处,把他们独立出来,不要和那些不需要变化的代码混在一起。
鸭子模型中展现是必须的,而且每个展现都不一样,所以可以在基类中定义一个抽象类。以便子类可以更好的重写。在鸭子模型中,飞和叫的行为是经常要发生改变的,而且是鸭子的行为,我们可以让其抽象为接口。从而为每一个类传递不同的飞和叫的行为。
原则二:面向接口编程,不要面向实现编程
面向接口编程的含义是:让接口作为鸭子的变量,具体的实现是一个继承接口的类。这样每个继承接口的类就可以达到了复用的效果。
二、动态改变鸭子的行为时,可以使用Setter,通过C#的多态来实现。
public class Duck{public IFly duckFly;public void SetFly(IFly fly){duckFly = fly;}}interface IFly{public void Fly();}
Head first 第一章相关推荐
- 王道考研 计算机网络笔记 第一章:概述计算机网络体系结构
本文基于2019 王道考研 计算机网络: 2019 王道考研 计算机网络 个人笔记总结 后续章节将陆续更新- 目录 一.概念.功能.组成.分类 1. 计算机网络的概念 2. 计算机网络功能 3. 计算 ...
- 计算机组成原理-第一章
计算机组成原理第一章概述 一.计算机系统概述 1. 定义 2.分类 3.计算机系统的抽象层次 二.计算机系统的组成 1.计算机系统的硬件组成 1.1冯.诺依曼计算机(重点) 1.2现代计算机结构 1. ...
- 山西农业大学c语言答案,第一章C语言及程序设计概述-东北农业大学教务处.doc...
全国高等农林院校"十一五"规划教材 C语言程序设计 孙力 主编 中国农业出版社 内容简介 本书是全国高等农林院校"十一五"规划教材之一. 全书共11章,分别介绍 ...
- Python3-Cookbook总结 - 第一章:数据结构和算法
第一章:数据结构和算法 Python 提供了大量的内置数据结构,包括列表,集合以及字典.大多数情况下使用这些数据结构是很简单的. 但是,我们也会经常碰到到诸如查询,排序和过滤等等这些普遍存在的问题. ...
- 《零成本实现Web自动化测试--基于Selenium》第一章 自动化测试基础
第一篇 Selenium 和WebDriver工具篇 第一章 自动化测试基础 1.1 初识自动化测试 自动化测试有两种常见方式 1.1.1 代码驱动测试,又叫测试驱动开发(TDD) 1.1.2 ...
- 华南理工网络计算机基础知识,2019年华南理工大学网络教育计算机基础随堂练习第一章...
2019年华南理工大学网络教育计算机基础随堂练习第一章 (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 第一章 计算机基础知识·第 ...
- CCNA 第一章 网际互联
第一章 网际互联 路由器知识点: 1.默认时,路由器不转发任何广播包和组播包. 2.路由器使用逻辑地址,逻辑地址在网络层的包头中,用来决定将包转发到的下一跳路由器. 3.路由器可以使用管理员创建的访问 ...
- 2018-3-31(Nature-Inspired metaheuristic Algoritjms Second Edition第一章)笔记-优化,寻优,元启发式算法
第一章-----Introduction' 1.1 一些歌概念: x: design or decision variables 设计或决策变量 f(x) :Objective function ...
- Android项目驱动式开发教程 第2版,《Android项目驱动式开发教程》第一章开发入门.ppt...
<Android项目驱动式开发教程>第一章开发入门 1.4 项目框架分析 4 android:versionName="1.0" > 5 8 第9行代码andro ...
- MinIO分布式专题(第一章、一文教你搭建MinIO单机版)
市面上有很多的分布式存储方案,比如FastDFS,MongoDB,或者目前云厂商的存储 比如阿里云,腾讯云,华为云等等,但是对于很多企业不愿意上云,于是业内就出现了很多 的方案,而本章 ...
最新文章
- vim编辑文章后不能修改
- 8、Kubernetes核心技术Service
- [置顶] 我整理的一些常用网址
- flutter 人脸检测_【转载】opencv实现人脸检测
- ORACLE DBA的职责
- 很多优秀的软件公司和开发者为什么愿意开源和共享?
- Linux中点号,星号,加号,问号实战
- 什么是暗物质?有没有理科大神解答一下啊?
- 在mac上安装cgal4.11时,QT5 和qglviewer的设置
- 两台windows笔记本创建家庭组实现文件共享
- Android自定义View研究(六)--View中的原点坐标相关问题
- Excel宏去除汉字
- CountDownLatch、CyclicBarrier、Semaphore的区别
- java并发包并发队列
- 樊登读书会掌控读后感_在樊登读书会读《掌控习惯》(读后感)
- 海海软件DRM-X 4.0产品介绍
- 数据结构与算法实验01-使用链表实现多项式乘法
- Android 接收和收发短信
- ILM --interface logic model
- SQL基础1--select