JavaSE:新特性和项目

一. 索引

  1.  常用的设计原则和设计模式

      <1>  常用的设计原则

            软件开发的流程

              需求文档分析,概要设计文档,详细设计文档,编码和测试,安装和调试,维护和升级

            原则

              开闭原则:对扩展开放,对修改关闭

              里氏代换原则:任何父类出现的地方,子类一定可以出现

              依赖倒转原则:尽量依赖于抽象类/接口,而不是具体实现类

              接口隔离原则:尽量将大接口拆分成若干小接口

              迪米特(最少知道)法则:一个实体应当少于其他实体发生相互作用(高内聚,低耦合)

              合成复用原则:声明一个类类型的引用,作为另外一个类类型的成员变量

      <2>  常用的设计模式 - 基本概念和分类

            设计模式:是代码设计经验的总结

            分类

              创建型模式

              结构性模式

              行为型模式

      <3>  设计模式详解

              单例设计模式(懒汉式)

              一个类对外提供,且只提供一个对象

            工厂方法模式

              通过工厂类中的方法,实现(大量的)产品(对象)的创建:

                  普通工厂模式

                  建立一个工厂类,并在类中提供一个工厂方法,来生产各种不同的产品

                  通过参数,传入字符串,来区分不同的产品

                  多个工厂方法模式:

                  一个工厂类中,多个工厂方法,各自生产不同的产品

                  优点:不需要传递字符串,避免了字符串传错时的异常

                静态工厂方法模式:

                  无需创建工厂类的对象,即可调用生产方法

                抽象工厂方法模式:

                  为了避免违背开闭原则,可以使用抽象工厂方法模式

                  即,每个工厂类,生产一种单独的产品

                                   

            装饰器模式:

              给一个对象动态地增加、撤销功能(不更改被装饰类原有的代码)

            代理模式:

              在代理类中,直接创建一个被代理类的对象

            模板方法模式:

              实际上就是抽象类的应用

              

  2.  新特性

      <1>  Java8 - 函数式接口

            一个接口只包含一个抽象方法, 如Runnable, Comparator 等

      <2>  Java8  - Lambda表达式

            实现函数式接口的一种方式:

            (参数列表) -> {方法体}

      <3>  Java8新特性 - 方法引用

            实现函数式接口的另一种方式:

            对象/类名  :: 方法名

      <4>  Java8新特性 - Stream接口

            简化对集合的操作

              创建流 --> 对集合进行中间操作(筛选与切片 / 映射 / 排序) --> 对集合进行终止操作 (匹配与查找 / 规约 / 收集)

              等价于:创建集合 --> 调用集合的成员方法

      <5>  Java8新特性 - Optional类

            该类的引入能很好地解决空指针异常,不用显式进行空值检测

      <6>  Java9 新特性

            模块化 - module

            钻石操作符<>的操作升级

            集合工厂方法of(), 用于创建不可变实例

            InputStream增加了transferTo()方法,底层是read()和write()         

      <7>  Java10新特性

            局部变量类型(var)推断  

      <8>  Java11新特性

            简化的编译运行

            String类新增方法

  3.  在线考试系统(项目)

      <1>  概要分析

      <2>  服务器:初始化、关闭、测试

      <3>  客户端:初始化、关闭、测试

      <4>  客户端:主界面的绘制、测试

      <5>  客户端:扫描器工具类的封装

      <6>  客户端:将管理员相关信息发送到服务器

      <7>  服务器:接收客户端发来的消息,并打印

      <8>  服务器:校验管理员的账户和密码

      <9>  客户端:接收结果,并打印

  4.  NIO技术

      <1>  NIO的概念

      <2>  NIO - Buffer缓冲区概述 & ByteBuffer的创建方式

      <3>  NIO - 缓冲区的常用方法 & Buffer类中的变量(一)

      <4>  NIO - Buffer类中的变量(二)

      <5>  NIO - Channel通道概述 & Channel API

      <6>  NIO - FileChannel基本使用

      <7>  NIO - 网络编程收发信息

      <8>  NIO - accept阻塞问题(设置非阻塞)

      <9>  NIO - Selector选择器的概念

      <10>   NIO - 选择键(SelectionKey) & Selector的使用流程

      <11>   NIO编程实例

二. 编程题

         

在已有的在线考试系统的基础上,实现学员管理系统的功能:

<1>  当项目启动时:将文件中的所有学员账户信息全部读取出来,放到一个集合List中

<2>  客户端:输入要增加学员的用户名和密码,通过对象输出流,发送给服务器

<3>  服务器:接收客户端发来的消息,判断集合中是否存在该学员账户信息,并实现具体添加功能

<4>  服务器:将增加学员功能的处理结果,发送给客户端; 客户端:给出对应的提示

<5>  当项目退出时:将集合中的所有学员信息,整体写入到文件中

提示:

  1.  对象序列化流,在socket发送完成后,注意使用reset()

  2.  服务器:要对客户端的请求 & 相应内容进行打印

              如:服务端收到客户端的 ”管理员登录“ 请求, 请求数据为 ”XXX“,

              调用 ”XXX“方法, 响应结果为 {"result" , "success"}

原文地址:https://www.cnblogs.com/JasperZhao/p/14981473.html