源码中经常看到调用本类中的抽象方法,运行时才知道是哪个实现类。但是我们看源码时不知道是哪个实现类,需要debug进行查看到是哪个实现类!!!!
源码中为啥会用好多设计模式如:模板,委派,装饰者,责任链,工程模式等。例如在netty中:
Bootstrap b = new Bootstrap();
ChannelFuture f = b.connect(this.host, this.port).sync(); 这个connect方法源码中使用了下图中的调用链。为啥要这么设计?
主要是为了封装其中的默认设置,将默认值设置了,用户就不用自己去调用java的NIO的API进行设置。netty的设计思想就是一个NIO的封装框架,让人们更好的使用NIO。封装之后开发者掌握一定得API就可以使用,不需要很麻烦的去使用java的NIO的api。对netty的介绍请看:https://www.jianshu.com/p/a4e03835921a