设计模式
xiayiguo
写博客为总结,提升,便于以后查阅。其中肯定有知识陈诉错误或表述不当之处,如您发现,还望指正,万分感谢!
展开
-
简单工厂模式实践
背景介绍初学java时,我们经常性的通过new的方式来获得一个java对象。这种方式方便快捷(与现实生活形成了强烈的反差),但当项目大了之后,这种方式可能就存在问题了,比方说,这边代码需要优化,需要使用另一种实现方式,那你还要回过头来改代码。而大的项目可能使用这个java对象的地方很多,那你还要一处一处的慢慢去改。尽管现在IDE使用全局搜索,不会遗漏你要改的地方,但很费力不讨好。引入简...原创 2018-03-02 16:50:12 · 293 阅读 · 0 评论 -
1+N次查询的由来
需求考虑这样一个需求,客户需要从数据库中一次性的取出用户表中的所有记录。对于这个需求,如果数据量小还可以,如果数据量大,必然会导致系统访问变慢,同时也会消耗大量内存。那怎么解决了?肯定要按照客户的需求来办事,那换个思路,既然不能控制一次性选取的条数,但我们可以控制每条记录显示的字段数。先选取出核心字段,用户可以自行选择是否加载更多字段。这样从一定程度上可以节省内存使用。代理模式我们...原创 2018-03-10 20:45:14 · 691 阅读 · 0 评论 -
动态代理的实现
静态代理之前通过1+N的问题实践了下静态代理。但静态代理有其局限性。代理类需要实现目标接口,而如果目标接口有所改变,代理类和目标实现均需要作出改变,不是很灵活。动态代理那如何实现动态代理呢?我们可以通过java内建的动态代理功能或者通过cglib(code generation library)来实现。需要注意的是,java的动态代理只能对接口进行代理,需要对类进行代理只能使用cgli...原创 2018-03-10 23:26:01 · 1449 阅读 · 0 评论 -
抽象工厂实践
背景介绍前面我们介绍了简单工厂,知道了可以通过简单工厂来获得想要的单个产品。那如果我们想要获的是一系列或者相互依赖对象的对象呢?这个时候就需要一个功能更加强大的工厂——抽象工厂。示例还是通过例子来做说明,这个例子是一个客户请求工程师帮忙组装电脑。同时为了突出学习重点,这个电脑只有cpu 和 主板。主要是用来学习设计模式嘛!这个工程师有两套装机方案供客户选择。 由于代码全部贴出来,...原创 2018-03-04 17:26:04 · 166 阅读 · 0 评论 -
单例模式入门与使用
背景介绍下面是一个读取配置文件的简单程序AppConfigpublic class AppConfig { /** * 用来存放配置文件中参数A的值 */ private String parameterA; /** * 用来存放配置文件中参数B的值 */ private String parameterB; ...原创 2018-02-25 16:06:09 · 225 阅读 · 0 评论 -
工厂方法实践
什么是工厂方法?工厂方法就是定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到其子类。 简单点说,就是工厂里有制定标准。同时在生产时,产出符合标准的产品。示例为了突出设计模式的重点,下面的功能均简单展示 1. 定义标准// 工厂方法 的 使用 : 内部 实现 了 部分 方法 ,还有...原创 2018-03-04 22:36:33 · 183 阅读 · 0 评论 -
单例模式进阶
前置文章: http://blog.csdn.net/xiayiguo/article/details/79369480 (单例模式入门与使用)单例模式实现的不同方式两个方式的名称比较形象:懒汉式和饿汉式。可以参看下面的代码。懒汉式在于懒,所以直到最后才会生成需要单例对象;而饿汉式由于饿,在类装载的时候就创建了单例对象。  ...原创 2018-02-25 21:46:39 · 183 阅读 · 0 评论