java游戏服务器开发之五--使用工厂模式生成netty

java游戏服务器开发之使用工厂模式生成netty
在写netty的会发现很多东西是重复的,既然是重复的内容,我们其实可以把部分内容抽象出来写好,然后具体的内容就交到具体实现里面编写
来看下这次代码的更新情况,添加了这些内容
base
constant
ConstantValue 存放系统常量
exception
ServerErrException 服务启动错误
factory
ServerBootstrapFactory Bootstrap工厂类
ServerChannelFactory ServerChannel的工厂类
server
channel
tcp
str
TcpMessageStringHandler Channel对应的Handler处理器
TcpServerStringInitializer Channel的具体实现
pojo
ServerConfig 服务的配置内容
java游戏服务器开发之五--使用工厂模式生成netty_第1张图片
主要的内容是在ServerBootstrapFactory和ServerChannelFactory之中,其他的基本是为这2个类中出现的,但是需要用到的一些常量。

先看下ConstantValue,ServerErrException和ServerConfig这三个类,因为都是常量,不用太多说明,直接看代码。

ConstantValue

        

/**
 * Copyright (C), 2015-2018
 * FileName: ConstantValue
 * Author:   zhao
 * Date:     2018/6/12 11:01
 * Description: 静态数据类
 * History:
 *           


 

ServerErrException

/**
 * Copyright (C), 2015-2018
 * FileName: ServerErrException
 * Author:   zhao
 * Date:     2018/6/12 14:36
 * Description: 服务启动错误
 * History:
 *           


ServerConfig

 

 

 

/**
 * Copyright (C), 2015-2018
 * FileName: ServerConfig
 * Author:   zhao
 * Date:     2018/6/12 11:16
 * Description: 服务的配置内容
 * History:
 *           


接下来看看ServerBootstrapFactory这个类,是根据我们配置的CHANNEL_TYPE(NIO,OIO)来创建不同的ServerBootstrap。

/**
 * Copyright (C), 2015-2018
 * FileName: ServerBootstrapFactory
 * Author:   zhao
 * Date:     2018/6/12 10:56
 * Description: Bootstrap工厂类
 * History:
 *           

然后看看ServerChannelFactory里面的逻辑,其实也就几句主逻辑,
获取配置的ip
通过ServerBootstrapFactory获取ServerBootstrap
设置ServerBootstrap的handler(通过getChildHandler()获取)
getChildHandler()通过设置的PROTOCOL_TYPE选择不同的handler
serverBootstrap绑定ip
*贯穿的其他代码是用来判断异常情况的
具体代码如下

/**
 * Copyright (C), 2015-2018
 * FileName: ServerChannelFactory
 * Author:   zhao
 * Date:     2018/6/12 14:29
 * Description: ServerChannel的工厂类
 * History:
 *           


最后就是写具体的handler

 

TcpServerStringInitializer

 

/**
 * Copyright (C), 2015-2018
 * FileName: TcpServerStringInitializer
 * Author:   zhao
 * Date:     2018/6/12 15:00
 * Description: TcpServerInitializer请求处理器
 * History:
 *           

 

 

TcpMessageStringHandler

 

 

/**
 * Copyright (C), 2015-2018
 * FileName: TcpMessageStringHandler
 * Author:   zhao
 * Date:     2018/6/12 15:01
 * Description: tcp消息处理
 * History:
 *           

上面的代码在码云上 https://gitee.com/lizhaoandroid/JgServer
后续代码添加,不好阅读的话,可以查看分支netty-factory
可以加qq群一起探讨Java游戏服务器开发的相关知识 676231564

 

 

 

 

 

 

你可能感兴趣的:(java,java游戏服务器开发,netty,Java游戏服务器开发)