Java 进阶P-5.3+P-5.4
封装
增加可扩展性
可以运行的代码!=良好的代码
对代码做维护的时候最能看出代码的质量
如果想要增加一个方向,如down或up
用封装来降低耦合
Room类和Game类都有大量的代码和出口相关
尤其是Game类中大量使用了Room类的成员变量
类和类之间的关系称作耦合
耦合越低,保持距离是形成良好代码的关键
可扩展性
用接口来实现聚合
给Room类实现的新方法,把方向的细节彻底隐藏在Room类内部了
今后方向如何实现就和外部无关了
用容器来实现灵活性
Room的方法是成员变量表示的,增加或减少方向就要改变代码
如果用Hash表来表示方法,那么方向就不是"硬编码"的了
1,扩展性最低的就是把类都单独拿出来,没有继承什么,都是单个的类来实现作用,这种思维可扩展性最低。因为当添加一个类的时候,调用这个类的方法一定要重新编写,这样就造成扩展性的低下。
2;就是存在继承,利用父类引用指向子类对象,在调用方法的时候在去instance判断,来调用各自的方法;这样可扩展性提高了一点点,当添加新内容的时候只需要去修改一个那个判断类就ok了。但是可扩展性并不是最高的,为了提高可扩展性,Java引用的多态这一原则,
在一个方法的参数中定义父类的引用,然后实际当中传入的时候,传的是子类的对象,然后再在实际的方法里去判断属于哪个子类,再去调用其成员方法。
Java 进阶P-5.3+P-5.4的更多相关文章
- Java 进阶 hello world! - 中级程序员之路
Java 进阶 hello world! - 中级程序员之路 Java是一种跨平台的语言,号称:"一次编写,到处运行",在世界编程语言排行榜中稳居第二名(TIOBE index). ...
- Java进阶(五)Java I/O模型从BIO到NIO和Reactor模式
原创文章,同步发自作者个人博客,http://www.jasongj.com/java/nio_reactor/ Java I/O模型 同步 vs. 异步 同步I/O 每个请求必须逐个地被处理,一个请 ...
- Java线程间通信方式剖析——Java进阶(四)
原创文章,同步发自作者个人博客,转载请在文章开头处以超链接注明出处 http://www.jasongj.com/java/thread_communication/ CountDownLatch C ...
- Java进阶(三)多线程开发关键技术
原创文章,同步发自作者个人博客,转载请务必以超链接形式在文章开头处注明出处http://www.jasongj.com/java/multi_thread/. sleep和wait到底什么区别 其实这 ...
- 当我们说线程安全时,到底在说什么——Java进阶系列(二)
原创文章,同步发自作者个人博客,转载请以超链接形式在文章开头处注明出处http://www.jasongj.com/java/thread_safe/ 多线程编程中的三个核心概念 原子性 这一点,跟数 ...
- Java进阶03 IO基础
链接地址:http://www.cnblogs.com/vamei/archive/2013/04/11/3000905.html 作者:Vamei 出处:http://www.cnblogs.com ...
- Java进阶01 String类
链接地址:http://www.cnblogs.com/vamei/archive/2013/04/08/3000914.html 作者:Vamei 出处:http://www.cnblogs.com ...
- 从ConcurrentHashMap的演进看Java多线程核心技术 Java进阶(六)
本文分析了HashMap的实现原理,以及resize可能引起死循环和Fast-fail等线程不安全行为.同时结合源码从数据结构,寻址方式,同步方式,计算size等角度分析了JDK 1.7和JDK 1. ...
- Java进阶(七)正确理解Thread Local的原理与适用场景
原创文章,始自发作者个人博客,转载请务必将下面这段话置于文章开头处(保留超链接). 本文转发自技术世界,原文链接 http://www.jasongj.com/java/threadlocal/ Th ...
- Java进阶(四十七)Socket通信
Java进阶(四十七)Socket通信 今天讲解一个 Hello Word 级别的 Java Socket 通信的例子.具体通讯过程如下: 先启动Server端,进入一个死循环以便一直监听某端口是 ...
随机推荐
- 四、docker容器管理
一.docker容器管理 1.1 容器查看-ps命令 显示本地容器列表,但是默认不显示关闭的容器,只显示运行中的容器,除非加上命令选项 -a 用法:docker ps [-a 显示所有容器,默认只显示 ...
- PMM实现监控Mysql-MGR
一.docker安装PMM服务端 1.安装yum配置单元 # 如果已安装,略过此步 yum install -y yum-utils #yum配置单元 2.配置docker阿里云yum源 #配置doc ...
- js中对小数的计算
在js 的计算中如果涉及到小数的运算,那结果可不要想当然了,比如 0.1+0.2 的计算 var num1 = 0.1; var num2 = 0.2; console.log(num1+num2) ...
- Windows操作系统搭建Lsky Pro
写在前面 本文主要介绍在Windows下部署兰空图床,以及安装过程, 非Windows系统可以参考本文章的安装流程,结合自己系统版本进行部署 图床用处 图床在日常的用处非常广泛,尤其对于经常写博客的人 ...
- OpenFeign
OpenFeign-服务间的调用 一.什么是Feign和OpenFeign? 在使用Feign或者OpenFeign前,服务之间的调用路径在函数内部设置: 能不能像controller调用servic ...
- [CS61A] Lecture 1&2&3. Introduction&Functions&Control
[CS61A] Lecture 1&2&3. Introduction&Functions&Control 前言 CS61A是加州大学伯克利分校一门计算机专业课程,用于 ...
- 嵌入式-C语言基础:字符串拼接函数strcat
#include<stdio.h> #include <string.h> //实现字符串拼接 char * mystrcat(char * dest,char * src) ...
- DevOps 必备的 Kubernetes 安全清单
Kubernetes 是当今许多公司采用的容器编排平台,它的实施需要对其生态系统有一定的了解,以便部署一个准备好用于生产的集群.然而从原则上来说,Kubernetes 并不是一个安全的平台,因为它缺乏 ...
- 基于 MQ 的分布式 Serverless 多租任务处理系统架构演进
本文作者:史明伟 , 阿里云智能高级技术专家. 1 Serverless 异步任务处理系统诞生和挑战 无论是对于云的开发者,还是尝试业务升级的企业客户,Serverless的三个概念 "极致 ...
- 并发bug之源(二)-有序性
什么是有序性? 简单来说,假设你写了下面的程序: int a = 1; int b = 2; System.out.println(a); System.out.println(b); 但经过编译器/ ...