自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Duke的专栏

三人行,必有我师焉

  • 博客(21)
  • 收藏
  • 关注

原创 年末的bala bala bala...

姑且当做这是我的年终总结吧,不习惯用这么正式的字眼,随意些、个性些挺好的……

2014-01-09 17:12:19 837

原创 多线程问题,你搞得定吗?

问题:数字1、2、3……100作循环,跑起4个线程,每个线程绑定一个集合来抢数字。 若有线程抢够25个数字,则退出争抢,其它线程继续,直到100个数字分完。

2013-12-18 15:44:11 1047

原创 十八、中介者模式

中介者模式 中介者模式,用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示的相互引用,从而使其耦合松散,而且可以独立的改变它们之间的交互。 该模式实现了控制集中化,把交互复杂性变为了中介者的复杂性,这就使得中介者会比任何一个关联对象都复杂。 ————摘自《大话设计模式》 基本结构: ①、抽象中介者,Mediator 群组各成员的业务处理方法 method

2013-10-24 11:26:09 738

原创 十七、责任链模式

责任链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到一个对象处理它为止。 ——摘自《大话设计模式》  //Ps:责任处理类都有各自的负责区块,以聚合的方式连成整个的责任链条。 基本结构如下: ①、Request 请求  ②、Handler 处理者的超类 Handler 自身的引用,由该

2013-10-18 14:10:08 856

原创 十六、命令模式

命令模式,将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。  ——摘自《大话设计模式》 Ps:“将请求封装为对象”的思想即是该种设计模式的精华。基本结构如下: ①、Receiver,命令的接收者,也是命令的实际执行者 具体方法一 具体方法二 …… ②、Command,命令超类 Receiver 的

2013-10-18 09:40:02 888

原创 十五、桥接模式

桥接模式,重点在于“分组抽象”,将两组抽象以聚合/组合的方式联系在一起。这两组抽象都可以有各自的变化而不会相互干扰。实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让它们独立变化,减少它们之间的耦合。————摘自《大话设计模式》 基本结构如下: ①、A组:######################################### 超类 A

2013-10-10 15:24:56 618

原创 十四、单例模式

单例模式——保证一个类仅有一个实例,并提供一个访问它的全局访问点。 Ps:这是我会的第一个设计模式,当时是为应付面试死记硬背的 几种常用的实现方式如下: ①、饿汉式/** * 单例模式:饿汉式实现 */public class Singletion1 { private static Singletion1 instance = new Singletion1()

2013-09-28 14:40:14 597

原创 寻路人

工作一年多了,不太忙,除了赶项目进度的时候,总有些闲暇时光。我承认自己是个懒人,没有足够的韧性利用下班时间研究专业技术。但和大多数北漂人士一样,一样的不甘于平庸。 每天朝九晚五,偶尔加班,懈怠、劳累、各种诱惑混杂着时间消磨曾经的梦想。转眼而立之年,虽然心里还有那么一丝不甘,也要回家解决生计了。我不想这样…… 试着学过些东西:多线程、linux、设计模式等等。忙忙

2013-09-26 15:02:16 1524 4

原创 十三、组合模式

把A和B组合在一起看成一个对象 需求中是体现部分与整体层次的结构时,以及希望用户可以忽略组合对象与单个对象的不同,统一的使用组合结构中的所有对象时,就应该考虑用组合模式了。 ————摘自《大话设计模式》 基本结构如下: ①、抽象接口 抽象方法:添加对象 抽象方法:移除对象 抽象方法方法A(用于子类覆写后,处理具体事务) ②、具体叶节点类,继承自抽象接口(无扩展)

2013-09-26 12:26:24 953

原创 十二、备忘录模式

菜鸟骑士挑战Boss,无奈实力悬殊至饮恨而终。不过好在单挑Boss前有“存档”,“嘿嘿,Boss,我们再来打过!” 备忘录模式用于记录某对象某一时刻的状态,比如对象在该时刻的某一属性值,便于读取“进度”。 基本结构如下 ①、需要被记录的对象(菜鸟骑士) 一些属性Fields 备忘录的引用  ②、备忘录 属性Memory(用于记忆对象的属性) ③、备忘中心 备

2013-09-25 17:17:16 685

原创 十一、观察者模式(Observable、Observer)

老板出差了,员工1、员工2..均放羊中。他们请求前台的秘书,当老板回来时通知自己,免得被Boss抓个现行。秘书想了想,说————嗯,这是观察者模式。 当一个对象的改变需要同时改变其它对象,而且它不知道具体有多少方法需要改变时,应该考虑使用观察者模式————摘自《大话设计模式》  Ps:本例用Java类库中的Observable和Observer实现 基本结构: ①、抽象通知者,

2013-09-17 10:39:11 1303

原创 十、建造模式

建造者模式用于创建一些复杂对象,这些对象内部构件间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。 ————摘自《大话设计模式》 基本结构如下: ①、产品,想要创建的复杂对象 ②、抽象建造者 各个构件的抽象建造方法 得到产品的抽象方法 ③、指挥者,指挥建造者 封装建造顺序的方法(产品的构建顺序,构件A-->构件B-->构件C) ④、具体建造者,

2013-09-16 15:46:36 655

原创 九、外观模式

Ps:关于这个笔者实在是没办法顾名思义了 现有原有系统A,要求在A的基础上做升级,对A改进并加入新功能。大刀阔斧的直接在A上修改、扩展并不是一个很好的方案,改来改去很容易诱发未知的问题。如果弄一个“媒介”,由“媒介”和A交互,并向外提供相关接口给新的功能模块使用。这样,从分工和逻辑上都有优势。这种处理方式就是外观模式。  外观模式可应用于将不同的两个层次分离,也可用于子系统与原系统的嫁接…

2013-09-12 14:20:18 756

原创 八、模板方法

在模板的基础上,只对某些特定的部分进行变动。 将所有重复的代码都上升到父类上去,而不是让每个子类都重复。 当我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法来处理。 ————摘自《大话设计模式》 笔者私下认为该模式较为简单,比较好理解,直接上代码: ①、模板类########################

2013-09-12 11:15:40 659

原创 七、原型模式(深浅克隆)

类似“影之分身术”的东西,以“鸣人”为原型,复制1000份出来,群殴之…… 在初始化信息不发生变化的情况下,克隆是最好的办法。既隐藏了对象创建的细节,又对性能大大的提高——不用重新初始化对象,而是动态地获得对象运行时的状态。——摘自《大话设计模式》 提到原型模式,就不得不提深浅克隆。两者都是完成对原型的复制,而区别在于对其引用对象的复制情况: 浅复制:仅仅复制原型,而对其他对象的引

2013-09-11 13:59:49 839

原创 六、UML初识

Ps:这里把UML的一些基础知识介绍下,很浅显,算是脑补  其实上面这张图已经包含了笔者要说的全部内容,下面只是分别描述下,能领会者可以忽略后续的内容,去吃个火锅唱个歌了①、类“+”表示public,“-”表示private,“#”表示protected ②、接口接口的实现,空心三角+虚线接口还有另外一种表示方法,俗称棒棒糖表示法 ③

2013-09-11 09:57:00 783

原创 五、代理模式

羞涩男孩八戒喜欢上了邻家女孩嫦娥,由于天性腼腆、不善言辞、性格怯懦等等优良品质的干扰,不敢去当面表达爱意,于是请自己最好的朋友三藏代为赠送礼物,以牵线搭桥。————这就是代理模式 代理模式:为其它对象提供一种代理以控制对这个对象的访问。 基本结构如下: ①、公用方法接口(八戒、三藏都有的行为) 方法甲 方法乙 ②、原型,实现“公用方法接口”(八戒) 方法甲的具体实现

2013-09-10 17:17:44 740

原创 四、装饰模式

所谓装饰,就是在原有物件上增加新的“零件”,使其拥有新的功能。打个比方,就像一个原本裸装的初级剑客,装备了宝剑、坐骑、铠甲等装备之后,战斗力暴增,完成从原来的5剑砍死一头家养猪到一剑秒杀巨龙的华丽转身。 装饰模式是为已有功能动态的添加更多功能的一种方式。它把每个要装饰的功能放到单独的类中,并让这个类包装它所要装饰的对象,当系统需要执行特殊行为时,客户就可有选择的、按顺序的使用装饰功能包装对象了

2013-09-10 14:42:35 630

原创 三、一些软件设计的原则、理念

①、软件设计的真正要做的许多内容,就是发现职责,并把那些职责相互分离(单一职责) ②、软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。(开闭原则) ③、针对接口编程,不要对实现编程。也就是针对抽象编程而不要针对细节编程(依赖倒转) ④、在软件里面,把父类都替换成它的子类,程序行为没有变化(里氏代换) Ps:继策略模式之后,书中用了大量的篇幅诠释了这些概念性

2013-09-10 09:46:32 1184

原创 二、策略模式(策略工厂)

顾名思义,策略模式就是在不同的条件下采取不同的策略,及不同的算法或业务规则。   策略模式是用来封装算法的,但在实践中,我们发现可以用它来封装几乎任何类型的规则。只要在分析过程中听到需要在不同时间应用不同的业务规则,就可以考虑用策略模式处理这种变化的可能性。  --《大话设计模式》  基本结构如下: ①、超类,或许可设计成抽象的abstract 一些公用的属性(被子类调用)

2013-09-09 16:04:58 1079

原创 一、简单工厂

工厂适用于生产,生产出不同的对象,这些对象都有着相同的特性,又有着各自独特的地方。    基本结构如下:        ①、超类,或许可设计成抽象的abstract    一些公用的属性(被子类调用)    一些公用的方法(被子类覆写)    ②、子类,个数较多,继承超类    得到超类公用方法,覆写    ③、工厂    工厂用于构建,以多态的方式,通过条件判

2013-09-09 15:38:03 539

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除