随笔分类 -  设计模式

设计模式,把面向对象发挥到了极致
摘要:策略模式的应用,我们以一个配置字典来说一下这个问题;首先这个字典用来管理若干个配置,每个配置项都有key和value,key是字符串,value是某种类型;我们通过一个ConfigServiceStrategy接口来规定配置的操作行为,通过ConfigServiceContext来表示一个配置上下文 阅读全文
posted @ 2024-12-31 13:35 张占岭 阅读(270) 评论(0) 推荐(0) 编辑
摘要:This Principle is the foundation for Design patterns in Software System. For acheiving flexibility and making code modular it is highly recommended th 阅读全文
posted @ 2024-12-23 14:52 张占岭 阅读(14) 评论(0) 推荐(0) 编辑
摘要:获取IP地址信息时,一般我们需要一个HttpServletRequest对象,然后从请求头里获取x-forwarded-for的值,而当我们使用dubbo+netty开发rest接口时,如果希望获取IP地址,HttpServletRequest是用不了的,你需要使用netty中的NettyReque 阅读全文
posted @ 2024-12-18 13:48 张占岭 阅读(335) 评论(0) 推荐(0) 编辑
摘要:[回到目录](https://www.cnblogs.com/lori/p/3896484.html) # 说明 复合的责任链,类似于管道模式,只要符合条件,说会向下传递,不会终止 # 算法说明 * 按最高优先级去使用,符合就用,不符合就走下一个策略 * 具体链条,有点像pipeline管道模式 * 阅读全文
posted @ 2023-06-30 15:48 张占岭 阅读(278) 评论(0) 推荐(0) 编辑
摘要:[回到目录](https://www.cnblogs.com/lori/p/3896484.html) # 概述 委派模式(Delegate Pattern)又叫作委托模式,是一种面向对象的设计模式,允许对象组合实现与继承相同的代码重用。它的基本作用就是负责任务的调用和分配,是一种特殊的静态代理模式 阅读全文
posted @ 2023-06-28 10:33 张占岭 阅读(314) 评论(0) 推荐(0) 编辑
摘要:[回到目录](https://www.cnblogs.com/lori/p/3896484.html) # 概述 命令模式(Command Pattern)是一种行为型设计模式,它将请求封装成一个对象,从而允许我们根据不同的请求将客户端参数化,并且能够将请求排队或记录请求日志、支持撤销操作等。该模式 阅读全文
posted @ 2023-06-28 10:11 张占岭 阅读(126) 评论(0) 推荐(0) 编辑
摘要:[回到目录](https://www.cnblogs.com/lori/p/3896484.html) # 责任链模式 它是一种设计模块,主要将操作流程与具体操作解耦,让每个操作都可以设置自己的操作流程,这对于工作流应用是一个不错的选择! 下面是官方标准的定义:责任链模式是一种设计模式。在责任链模式 阅读全文
posted @ 2023-06-28 10:05 张占岭 阅读(187) 评论(0) 推荐(0) 编辑
摘要:"回到目录" 职责链模式 它是一种设计模块,主要将操作流程与具体操作解耦,让每个操作都可以设置自己的操作流程,这对于工作流应用是一个不错的选择! 下面是官方标准的定义:责任链模式是一种设计模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一 阅读全文
posted @ 2018-01-10 22:32 张占岭 阅读(784) 评论(0) 推荐(0) 编辑
摘要:回到目录 下面将介绍以下几个原则,都是软件设计里的大哥大,大姐大级别的人物! DRY DRY是Do Not Repeat Yourself的简称,不要写重复的代码,可以使用代码重构里的提取到方法,提取到类来做这事 KISS KISS 是Keep it short and simple 的简称。意思是 阅读全文
posted @ 2017-09-13 10:16 张占岭 阅读(729) 评论(0) 推荐(1) 编辑
摘要:回到目录 对于Lind.DDD这个敏捷框架来说,插件也是其中的一个亮点,所有被认为是插件(Plugins)的模块都会继承自IPlugins这个标示接口,它在程序启动时会找到所有插件,并通过autofac注册到运行时中,然后在使用时通过PluginManager对象进行获取,即所有模块只注册一次,在使 阅读全文
posted @ 2016-10-19 10:39 张占岭 阅读(1645) 评论(1) 推荐(4) 编辑
摘要:返回目录 再说概念 这两个模式确实有点相似,都为了实现程序的解耦产生的,观察者一般又称发布/订阅模式,它一般是有一个主题对象,然后有多个订阅者去关注它,当它的状态发生变化时,会自动通知这些订阅者;而消费者模式类似一个缓存队列的概念,它也称为生产者/消费者模式,生产者只负责生产数据不去做处理(缓解高并 阅读全文
posted @ 2016-04-20 16:43 张占岭 阅读(4945) 评论(1) 推荐(4) 编辑
摘要:返回目录为何要设计多功能消息组件之前写过一篇装饰器模式的文章,感觉不够深入,这次的例子是实现项目中遇到的,所以把它拿出来,再写写,之前也写过消息组件的文章,主要采用了策略模式实现的,即每个项目可以通过配置进行一种消息的订制,如,你可以订制email,sms,rtx,qq等,但不能同时采用多种机制完成... 阅读全文
posted @ 2015-03-13 11:27 张占岭 阅读(1202) 评论(0) 推荐(5) 编辑
摘要:返回目录模版模式,又被称为模版方法模式,它可以将工作流程进行封装,并且对外提供了个性化的控制,但主流程外界不能修改,也就是说,模版方法模式中,将工作的主体架构规定好,具体类可以根据自己的需要,各自去实现,这可能会让我们想到策略模式,两者有着本质的区别。何时能用到它?我们看一下策略模式的应用场景1、 ... 阅读全文
posted @ 2014-11-07 15:40 张占岭 阅读(3170) 评论(1) 推荐(0) 编辑
摘要:返回目录在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。意图【GOF95】在提出桥梁模式的时候指出,桥梁模式的用意是"将抽象化(A... 阅读全文
posted @ 2014-09-05 16:10 张占岭 阅读(1522) 评论(0) 推荐(2) 编辑
摘要:返回目录门面模式(Facade)属于结构型模式的一种,它符合面向对象的封装原则,但又不符合开闭原则,呵呵,今天我们主要说它的优点,不谈缺点.定义门面模式,是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使用子系统更容易使用。技巧我们在设计子类时,... 阅读全文
posted @ 2014-09-03 15:52 张占岭 阅读(2502) 评论(0) 推荐(1) 编辑
摘要:返回目录建造者模式是我的"设计模式"里创建型模式里的最后一篇,这种模式在实现中,很多架构都用到了,如MVC,MVP,MVVM,它们都是有建造者模式的精髓的,即,创建与表现分享,我们的MVC何尝不是,我们的MVVM又何尝不是呢,我们做软件的,换肤是常有的事,其实换肤的实现不就是建造者模式最好的体现吗,... 阅读全文
posted @ 2014-09-03 15:10 张占岭 阅读(1494) 评论(1) 推荐(4) 编辑
摘要:返回目录何时能用到它?组合模式又叫部分-整体模式,在树型结构中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。对于今天这个例子来说,它可以很清楚的说明组合模式的用意,首先是一个Graphics对象,它表示是一绘图功能(树根),... 阅读全文
posted @ 2014-08-15 11:46 张占岭 阅读(971) 评论(0) 推荐(1) 编辑
摘要:返回目录原型模式是创建型模式的一种,其特点在于通过“复制”一个已经存在的实例来返回新的实例(clone),而不是新建(new)实例。被复制的实例就是我们所称的“原型”,这个原型是可定制的。原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;或者创建值相等,... 阅读全文
posted @ 2014-08-08 17:11 张占岭 阅读(1177) 评论(0) 推荐(1) 编辑
摘要:回到占占推荐博客索引 设计模式(Design pattern)与其它知识不同,它没有华丽的外表,没有吸引人的工具去实现,它是一种心法,一种内功,如果你希望在软件开发领域有一种新的突破,一个质的飞越,那么,设计模式应该是你的必修之路!设计模式可以提高软件的扩展性,代码的健壮性和重复利用性,设计模式是实 阅读全文
posted @ 2014-08-07 13:05 张占岭 阅读(3209) 评论(0) 推荐(3) 编辑
摘要:返回目录策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。而对于客户端(UI)来说,可以通过IOC再配合工厂模块,实现动态策略的切换,策略模块通常于一个抽象策略对象(interface or abstract class),多个具体策略对象(implement class... 阅读全文
posted @ 2014-08-07 09:29 张占岭 阅读(1498) 评论(0) 推荐(0) 编辑