随笔分类 - (A)面向对象
摘要:文章集合 Netty的异步模型分析(1) Netty的异步模型分析(1) 从最常见,最简单的bind入手——如何正确启动一个Netty服务器 “你”怎么定义异步? 正确启动服务器的方式 前面扯了那么多Netty的线程调度模型,以及Netty底层的高性能实现细节,从本篇开始看看Netty的API的用法
阅读全文
摘要:前言和目标 首先,好久之前写了:Netty 学习笔记(1)Netty 通信原理,可惜很久没更新了,不少博客园的网友经常问,到底还写不写,后来连问都不问了,深表惭愧,从今天开始,重新开启这个系列文章——Netty源码学习笔记。 其次,立意不同于一些零散的个人博客文章,打算从头到尾,形成一个系列,也不想
阅读全文
摘要:1、前言 本模式用的不是特别多,知道即可,本文主要是平时的读书笔记的整理 2、出现的动机和概念 备忘录模式——也叫 Memo 模式,或者快照模式等,顾名思义就是实现历史记录的作用,比如可以实现游戏关卡的角色复活,任务进度保存,命令的撤销,以及系统的快照留存记录等功能。 备忘录模式的用意是在不破坏封装
阅读全文
摘要:1、前言 本模式经 遍历“容器”的优雅方法——总结迭代器模式 引出,继续看最后的子菜单的案例 2、组合模式的概念 组合模式,也叫 Composite 模式……是构造型的设计模式之一。 组合模式允许对象组合成树形结构,来表现“整体/部分”的层次结构,使得客户端对单个对象和组合对象的使用具有一致性。 C
阅读全文
摘要:前言 本文主要是读书笔记的整理,自己总结的倒不多,做个记录 聚集(集合)的概念 如果能把多个普通类的对象聚在一起形成一个总体,这个总体就被称之为聚集(Aggregate),举例子: 1、在任何编程语言中:数组都是最基本的聚集,在Java中,数组也是其他的 JAVA 聚集对象的设计基础。 2、在Jav
阅读全文
摘要:前言 非常重要的一个设计模式,也很常见,很多框架都有它的影子。定义就不多说了。两点: 1、为其它对象提供一个代理服务,间接控制对这个对象的访问,联想 Spring 事务机制,在合适的方法上加个 transaction 注解,就分分钟实现了事务。 2、除了1,代理对象还能充当中介的角色。 为什么要有代
阅读全文
摘要:前言 总的结论就是:不推荐使用JDK自带的观察者API,而是自定义实现,但是可以借鉴其好的思想。 java.util.Observer 接口源码分析 该接口十分简单,是各个观察者需要实现的接口 package java.util; public interface Observer { void u
阅读全文
摘要:前言 这是一个原理非常重要,写法很常见的一个模式,值得深入理解和总结一下 可以想 zookeeper 等,有时系统需要定时(可插拔)接收或者监听其他服务的动态,这类需求经常见到,那么观察者模式就是做这个的: 一个软件系统里面包含了各种对象,就像一片欣欣向荣的森林充满了各种生物一样。在一片森林中,各种
阅读全文
摘要:前言 外观模式也叫门面模式,英文是 facade。这是很常见的一种设计模式,它比如 JDK 中的 Socket 接口就应用了外观模式,参考:门面模式的典型应用 Socket 和 Http(post,get)、TCP/IP 协议的关系总结 外观模式也非常简单,它提供了一个统一的对外的高层次接口,用来访
阅读全文
摘要:前言 中介者模式,感觉也没什么好说的,就是字面意思:对复杂对象之间进行管理,但是这个管理是双向的,既可以接受反馈,也能发出指令,实现对象之间联系的解耦合,是对象的行为型模式。故叫做中介者,或者调停者模式。 简单的理解,就是可以把一对多的复杂对象关系转为一对一的简单关系。 实现代码——简易聊天室案例
阅读全文
摘要:前言 适配器模式的定义很简单,就是做一个中间转换,类似港版的 iPad,iPhone 等电源插头,需要一个转换器,才能使用大陆的插座。 直接上代码,很简单,不多总结了。 类的适配器 被适配的类,可以看成是一个旧系统里的稳定的类 public class Adaptee { // 被适配的类 publ
阅读全文
摘要:前言 个人感觉,该模式主要还是在多线程程序的设计中比较常用,尤其是一些异步任务执行的过程。但是本文还是打算先在单线程程序里总结它的用法,至于多线程环境中命令模式的用法,还是想在多线程的设计模式里重点总结。 实现思路 其实思路很简单,就是把方法的请求调用和具体执行过程分开,让客户端不知道该请求是如何、
阅读全文
摘要:前言 简单工厂模式,工厂方法模式,抽象工厂模式,这三个模式,当然还有单例模式,建造者模式等等,应该是日常工作中常用的,尤其是工厂模式,应该是最最常见的模式,对理解面向对象有重要的实际意义。 简单工厂模式 最简单,最直接,能满足大部分日常需求,不足是工厂类太简单——无法满足开闭原则,对多个产品的扩展不
阅读全文
摘要:简单工厂模式严格来说不算一个设计模式——缺点 继续说之前提到的简单工厂模式,严格来说,这不算一个设计模式……而且在业务量比较多了之后,它也有诸多的隐患 1、由于工厂类集中了所有实例的创建逻辑,这就直接导致一旦这个工厂出了问题,所有的客户端都会受到牵连 2、由于简单工厂模式的产品基于一个共同的抽象类或
阅读全文
摘要:除了 new 之外的创建对象的方法 通过 new 创建对象,会使得程序面向实现编程,先举个例子,某个果园里现在有两种水果,一种是苹果,一种是香蕉,有客户想采摘园子里的水果,要求用get()方法表示即可 一般情况下,最直接的写法为: public class Apple { public void g
阅读全文
摘要:前言 如下是之前总结的 C++ 版的;软件开发常用设计模式—单例模式总结(c++版),对比发现 Java 实现的单例模式和 C++ 的在线程安全上还是有些区别的。 概念不多说,没意思,我自己总结就是: 有这样一个类,该类在生命周期内有且只能有一个实例,该类必须自己创建自己的这个唯一实例,该类必须给所
阅读全文
摘要:前言 装饰模式顾名思义就是在不改变原对象的前提下,将新功能优雅的附加(装饰)到该对象上,可以实现对复合算法(策略)的优雅封装、对需要协作的算法(策略)进行有机组合。 装饰模式和策略模式用法类似,但是也有明显区别——策略模式运行时只能运行一个算法,且其各个算法(算法族)之间必须相互独立,不能有联系,装
阅读全文
摘要:前言 继续接 创建多个“产品”的方式——工厂方法模式总结。 现在又有了新的需求:果厂里新进了一批进口水果:进口香蕉,进口苹果,进口梨,同样的是需要采集水果,之前的程序只是对工厂进行了抽象,使得不同的产品对应各自的工厂,而产品仅是国内水果,现在涉及到了进口水果,现在有了两大类的产品,每个产品又分为不同
阅读全文
摘要:1、三层构架和 MVC 意思一样么? Java WEB 开发中,服务端通常分为表示层、业务层、持久层,这就是所谓的三层架构: 1、表示层负责接收用户请求、转发请求、生成数据的视图等; 2、业务层负责组织业务逻辑; 3、持久层负责持久化业务对象; 这三个分层,每一层都有不同的模式,即架构模式,如下图:
阅读全文
摘要:1、Java 开发的 dao 层和 service 层都使用接口,是否是为使用接口而使用接口? Java 中 dao 层和 service 层都使用接口,是否是为使用接口而使用接口? 个人认为,如果没有搞懂为什么用接口,那么有些人就会逢类就要实现接口……在一些业务不复杂的场景下,真的没有必要这样做,
阅读全文