![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 87
木小草
http://www.muxiaocao.cn/me
展开
-
系统架构设计——设计模式之代理模式(一)
在纷繁复杂的程序设计世界里,我们总是需要尽可能的考虑到各种情况。而有这么一种机制,我们可以将我们指责中的一部分隔离开来,让一个所谓的代理来帮我们解决一部分和主体业务关系不大的业务,从而让我们能更专心的设计我们的主体业务。这就是代理模式的初衷,也是很多流行框架的应用。——个人理解。一、代理模式(Proxy)的定义 为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不合适或者不能原创 2016-05-15 20:38:07 · 1938 阅读 · 1 评论 -
系统架构设计——设计模式之装饰者模式
许多模式是长期经验的实证,可通过提供扩展的方法来保护代码免于被修改。接下来我将介绍一下一个完全遵循开放-关闭原则的设计模式——装饰者模式。它可以给爱用继承的人一个全新的设计眼界。——Head First 设计模式装饰者模式的定义 动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。应用场景 与之前的策略模式不同,装饰者模式是用来解决多方案的组合问题的。试想一下五原创 2016-05-05 11:48:20 · 681 阅读 · 0 评论 -
系统架构设计——设计模式之策略模式
面向对象的变成,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类。——大话设计模式策略模式的定义 它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。应用场景在我们软件开发过程中,经常会遇到需求变动,具体的算法变动也是常有的事。就拿商场打折促销的方式来说,久经常的变动。五一打8折,十一打7折,原创 2016-05-03 10:00:22 · 1605 阅读 · 0 评论 -
系统架构设计——学习篇之类的设计(UML)
概述 “编程是一门技术,更加是一门艺术,不能只满足于写完代码运行结果正确久完事,时常考虑如何让代码更加简练,更加容易维护,容易扩展和服用,只有这样才可以真正得到提高。写出优雅的代码真的是一种很爽的事情。UML类图也不是一学就会的,需要有一个慢慢熟练的过程。所谓学无止境,其实这(类的设计)才是理解面向对象的开始。” ——大话设计模式 对于初学者来说,我们不仅仅是要学会面向对象的封装原创 2016-05-01 16:08:17 · 13174 阅读 · 4 评论 -
系统架构设计——设计模式之代理模式(二)CGLIB动态代理实现
像上一篇所说的代理模式其实是静态代理,在实际开发中其实应用不大,因为他需要事先知道被代理对象是谁,而且被代理对象和代理对象实现了公共的接口。实际情况往往并不能满足这些条件,我们往往在写代理模式的时候并不知道到时候被代理的对象是谁。解决办法就是——动态代理。以下我们将使用CGLIB实现动态代理。一、动态代理概述 程序在运行期而不是编译器,生成被代理对象的代理对象,并且被代理对象并不需要和代理对象原创 2016-05-16 18:38:16 · 12735 阅读 · 0 评论 -
系统架构设计——设计模式之模板模式
假如生活欺骗了你,请不要抱怨。他一定是在考验你,你要经得住考验。毕竟牛逼的人生不可能总是风平浪静。——写给自己。一、模板模式定义 定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。——《设计模式:可复用面向对象设计软件的基础》二、应用场景 对于代码有洁癖的人,绝不会容许一段代码被许多个方法重复使用。那我们我们怎么才能在原创 2016-07-24 16:38:26 · 1837 阅读 · 0 评论 -
分布式系统架构——使用Redis做MyBatis的二级缓存
使用Redis做MyBatis的二级缓存 通常为了减轻数据库的压力,我们会引入缓存。在Dao查询数据库之前,先去缓存中找是否有要找的数据,如果有则用缓存中的数据即可,就不用查询数据库了。如果没有才去数据库中查找。这样就能分担一下数据库的压力。另外,为了让缓存中的数据与数据库同步,我们应该在该数据发生变化的地方加入更新缓存的逻辑代码。这样无形之中增加了工作量,同时也是一种对原有代码的入侵。这对于原创 2016-07-29 16:23:15 · 15116 阅读 · 3 评论