设计模式
文章平均质量分 53
幺零小柒
这个作者很懒,什么都没留下…
展开
-
(设计模式)模板模式Template-java
•模板模式(Template),顾名思义,类似于一种格式,相似的框架,不同的个性化。 定义:父类定义了一个流程框架,流程框架中的方法有普通方法和抽象方法。这些抽象方法可以延迟到子类实现,总结起来就是子类实现了流程中的个性化。•角色组成 ①抽象模板(Abstract Template): 1.给出一个逻辑流程的完整框架方法,流程中的方法可以是具体方法或抽象方法,实现一个业务或算法逻辑。 ...原创 2017-08-22 13:33:41 · 365 阅读 · 0 评论 -
(设计模式)策略模式Strategy-java
•策略模式,将一个一组作用类似的算法包装起来,使他们可相互替代,算法可独立于客户端变化,且增加新的算法非常容易,也称为政策模式。 •策略模式着重于算法的替代性,即根据不同的场景使用不同的算法,系统的健壮性因此提高。 •策略模式是以算法为单位,有时候容易和模板模式混在一起,模板模式一般是一个算法中的某一步不同,算法的骨架是大致固定的,而策略模式一般是算法为一个单位。且策略模式的算法都是公共的,可...原创 2017-08-17 22:18:38 · 281 阅读 · 0 评论 -
(设计模式)装饰者模式Decorator&Wapper-java
★ 装饰,顾名思义,就是使用装饰品对被装饰者进行装饰。比如一个人,作为被装饰者,可以使用衣服,帽子,鞋子对他进行装饰。但要注意的是,不管怎么装饰,装饰后的依然是个人。也就是说,装饰行为并不会改变被装饰者的本质。 ★ 起初人们想要为一个类添加新的功能,一般是对类进行拓展,比如你想要一个穿衣服且带帽的人,那你要建一个穿衣服的人的子类,然后再继承它建一个带帽的人的子类。但是如果又想要一个穿衣服的且穿鞋...原创 2017-05-31 13:43:24 · 272 阅读 · 0 评论 -
(设计模式)观察者模式Observer-java
•观察者模式(Observer),生活中随处可见这样的例子,各大网站从天气站获取最新的天气状况;送报员将报纸送到订阅报纸的人们手中;人们时时关注股票的行情变化等等。•定义:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。•当一个对象的改变将导致一个或多个其他对象也发生改变,而并不知道具体有多少对象...原创 2017-08-28 17:56:13 · 624 阅读 · 0 评论 -
(设计模式)单例模式Singleton-java
•单例模式,作为设计模式中的”hello world”,但是并不像想象中的那么简单。•单例模式处处可见,比如电脑的任务管理器只有一个。•单例模式,保证一个类的实例只存在一个,即所有的类的引用都指向一个实例对象,就行内存中的类的Class对象一样,一个类的Class对象只有一个。•单例分为饿汉和懒汉式,区别:在类加载的时候构造还是使用的时候构造,懒的总是在用的时候才构造。•单例的懒汉...原创 2017-09-17 18:06:28 · 416 阅读 · 0 评论 -
(设计模式)双重检查的缺陷以及更好的单例模式-java
•这几天看并发编程的书,发现原先写的单例模式有点问题,当时认为双重检查是安全的,现在有新的了解。下面是双重检查写法: public static LasyModeSingletonVersion4 getSole() { //只有sole为空时才构造,否则直接返回 if(null == sole) { //在构造的临界区上加锁,而不是整个...原创 2018-02-12 15:12:19 · 7122 阅读 · 12 评论 -
(设计模式)迭代器模式Iterator-java
迭代器模式是在不暴露集合内部结构的条件下,实现对不同集合的遍历。用迭代器来实现元素的遍历,而不是集合自身。不同的集合对象可以实现不同的遍历方式,将集合和遍历分开,而不是耦合在一起。为不同集合的遍历添加统一的接口。模式角色①Aggregate,抽象集合,代表集合,可以创建出“按顺序访问保存在我内部元素的人”,即可以创建一个迭代自身元素的迭代器。/** * 代表集合接口 * 定...原创 2018-03-28 09:57:04 · 761 阅读 · 0 评论 -
CGLIB动态代理
今天看公司框架里有很多使用CGLIB动态代理的代码,自己也写个例子: CGLIB的动态代理最主要的类是MethodInterceptor,就像InvocationHandler类在JDK的动态代理里一样重要。import java.lang.reflect.Method;import net.sf.cglib.proxy.Enhancer;import net.sf.cglib.prox...原创 2018-05-15 11:42:09 · 415 阅读 · 0 评论