
设计模式
文章平均质量分 56
惜暮
这个作者很懒,什么都没留下…
展开
-
线程安全的单例模式也可以很精彩
这篇博客以多种方式实现单例模式,包括非线程安全、线程安全的单例模式以及线程安全的优化。 饿汉式单例; 懒汉式单例(延迟初始化);(线程不安全) 线程安全的单例-synchronized方法 线程安全的单例-同步代码块 线程安全的单例-显式锁ReentrantLock进一步减小锁的粒度 线程安全的单例-DCL(double check lock)首先可以参考一下我原创 2017-01-22 22:59:55 · 2463 阅读 · 1 评论 -
9. 建造者模式
建造者模式属于创建型模式 先来看看定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式适用范围: 1、当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 2、当构造过程必须允许被构造的对象有不同表示时。建造者模式的结构: 1、Builder:为创建一个产品对象的各个部件指定抽象接口。 2、ConcreteBuilder:实原创 2017-01-06 18:02:26 · 334 阅读 · 0 评论 -
8. 工厂方法设计模式
工厂方法模式属于创建型模式先来看看定义: 工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到了其子类。工厂方法模式工厂方法模式是对简单工厂模式的进一步抽象的结果。在简单工厂模式中(关于简单工厂模式可以看这篇博文),对类型判断的所有if…else…else 都在工厂类中,势必造成工厂类的无线臃肿,其实也就是类型的逻辑判断放在了工厂类内部。但是在工原创 2017-01-06 14:12:04 · 358 阅读 · 0 评论 -
0. 设计模式概述
1、什么是设计模式?设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易地被他人理解、保证代码可靠性。毫无疑问,设计模式于己于人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石脉络,如同大厦的结构一样。总体来说,设计模式分为3大类总共23种: 1、创建型模式,共5种 工厂方法转载 2017-01-06 11:15:42 · 375 阅读 · 0 评论 -
7. 装饰者模式--如何不同风格打扮自己
定义 装饰模式:动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。原创 2016-07-15 12:32:53 · 494 阅读 · 0 评论 -
6. 依赖倒转原则
定义: 依赖倒转原则: 1.高层模块不应该依赖于底层模块。两个都应该依赖于抽象。 2.抽象不应该依赖于细节。细节应该依赖于抽象。简单点说:我们需要针对接口编程二不是针对实现编程。原创 2016-07-15 10:22:56 · 431 阅读 · 0 评论 -
5. 开放封闭原则
定义: 开放封闭原则:软件实体(类、模块、函数等等)应该可以扩展但是不能修改。这个原则的两个特征就是:1.对于扩展是开放的。 2.对于更改是封闭的。原创 2016-07-15 09:09:10 · 402 阅读 · 0 评论 -
4. 单一职责模式
单一职责模式 单一职责模式:就一个类而言,应该仅有引起它变化的原因。如果一个类承担的责任过多,就等于把这些责任耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。原创 2016-07-15 08:57:10 · 434 阅读 · 0 评论 -
3. 单例模式--某些类也需要计划生育
1. 单例模式 在我们使用一些框架时(比如Mybatis),经常会遇到有些类(比如sqlSessionFactory),这些类在系统 运行的过程中只需要一个实例对象,所以我们一般都是交给spring来管理。这种情况就类似于:我们对于该类的管理中,只允许生成一个对象实例。这时候我们必须对构造方法做出一些改动,因为如果我们不显示改变构造方法,默认的构造方法是public的,这样我们的程序就可以通过原创 2016-06-24 11:08:42 · 557 阅读 · 0 评论 -
2. 代理模式-为别人做嫁衣
今天来说另外一个设计模式:代理模式。举个例子:张三想追李娇娇同学,这里李娇娇同学不认识张三。张三让戴笠帮忙去送花送零食之类的,最后李娇娇同学和戴笠在一起了,张三为戴笠做了嫁衣。下面来详细解释:原创 2016-06-23 21:52:55 · 548 阅读 · 0 评论 -
1. 简单工厂设计模式
设计模式之简单工厂设计模式今天从图书馆借来了好久都没借到到《大话设计模式》这本书,据说这本书特别适合入门级别,讲课也是诙谐幽默,终于有机会来拜读,闲话不扯,直接开始干货。(本文均是以java语言实现)以一个实际的例子为例:实现一个简单计算器的控制台程序,输入两个数据和一个运算符得到结果。我估计作为一个从C语言过渡过来,OO思想并不完善的程序员来说,可能第一想法的代码就是如下所示原创 2016-05-20 09:57:51 · 494 阅读 · 0 评论