写点什么

模式和重构 - 学习心得

用户头像
蒜泥精英
关注
发布于: 2020 年 06 月 24 日
模式和重构-学习心得

 

策略模式:

JUNIT spring ECLIPSE 的插件都是 策略模式;

 

模板模式:

 

为什么doget 能被调用,而doput 不会被调用,因为在service 内有IF ELSE 来控制

组合模式:

处理树形结构比较合适

组合模式不应该出现递归方法,因为递归需要有退出的判断条件。

 

组合模式一定有个公共的实现接口

树有两类节点;中间NODE 和 LEAF 两种节点。

 

如果是容器类(NODE类)的组件,就遍历自己的LIST ;

如果是非容器(叶子)的组件,就直接打印自己的

 

典型的例子:JUNIT 的 TestCase和 TestSuit 组合模式。

 

观察者模式、组合模式 都有关键代码:LIST

装饰模式,构造函数会把其它实例传递进来。

在构造的时候传个和他一样的示例进来;

 

装饰模式

可以不断的去嵌套,装饰模式在运行的时候才知道是谁去装饰谁。

理解:装饰就是补充的扩展处理

 

典型的例子:早期的JAVA 容器 是非线程安全的,所以可以通过修饰器来包装下容器,将它变成线程安全的。

 

装饰者模式 和 适配器模式很像;

其实很多设计模式很像;但是不同的模式他的作用是不同的,为了解决不同的问题。

 

观察者模式和组合模式的比较

观察者模式:通知别人;

组合模式:都是同样的接口;

 

spring的模式

依赖注入:依赖的对象不用关心,可通过框架来帮开发者注入

 

依赖注入怎么实现:

(1)通过配置文件,配置实现的类类名;

(2)再进一步,原来由开发者写工厂来做,现在交给容器来做,而不是应用程序来做。

 

spring的类都是单例模式的,通过beanMap来保证单例。

其实spring的容器本质上就是个map

 

spring 的mvc:不需要写这么多servlet,是怎么实现的?

核心的原理就是:

有个全局的servlet获取url 和参数,然后把url和参数传递给对应的方法来做。

只要把URL 对应到具体的方法。

 

案例分析:

大数据领域最著名的是HIVE

 

HIVE 可以将SQL 转 成 HADOOP的MAPREDUCE 来执行,就不需要人为来处理了。如果人工来写,就比较麻烦。HIVE需要将SQL 写成 HIVEQL

 

前几年,HADOOP ,

将再ORACLE上跑

 

SQL 转成 HIVEQL

 

难点:

(1)语法转换:SQL->HIVEQL

(2)转后语法,要变成HIVE能支撑

 

原则:

单一职责原则;

每个结构交给具体的类去处理;

将复杂变简单;

 

增加新功能原来的代码不去动它,新增新的类就行了,所以采用开闭原则

 

怎么使用模式:

 

遇到了什么问题?什么模式适合解决这个问题。

根本:模式设计还是要应用到具体的方案中。

 

典型的例子:

JUNIT的设计者就是 设计模式的编写者之一。

所以JUNIT中的设计模式使用的比较多。

是个典型的设计模式的产品。

 

用户头像

蒜泥精英

关注

还未添加个人签名 2018.09.19 加入

还未添加个人简介

评论

发布
暂无评论
模式和重构-学习心得