摘要: 解释器模式解释器模式就是定义一种语言,并定义这个语言的解释器,解释器能够按照定义好的语法来将这种语言‘翻译’成使用者能理解的语言。广泛上来讲,Java是一种定义的语言,JVM就是一种‘解释器’,而计算机就是最终的使用者。我们写一段Java代码,而计算机只认识0101的机器语言,JVM就是将Java代... 阅读全文
posted @ 2014-05-13 17:35 biglaojiang 阅读(752) 评论(2) 推荐(0) 编辑
摘要: 命令模式命令模式是一种比较容易理解的设计模式,顾名思义,就是调用者发一个命令,有人给做完就行了,无关乎怎么做,也无关乎谁做。我们继续我们以往的方式:理论联系实践的方式来理解命令模式。最近我们实验室接到了一个新的订单,由于我们太阳兽人工厂的强大市场公关能力,我国某富豪需求一批太阳女兽人来满足其某些需求。老总非常高兴得到这么大的一笔订单,所以大笔一挥,决定做,并且取代号为‘爱’。俗话说得好,领导一动嘴,小弟弟跑断腿。老总只发号了一个做的命令,并不关心是谁做的,怎么做的,只关心最后能不能做好。class MiShu { public void doLove() { }}p... 阅读全文
posted @ 2013-08-29 15:31 biglaojiang 阅读(1096) 评论(2) 推荐(4) 编辑
摘要: 责任链模式责任链模式就是让多个对象按职责层次依次处理请求,使多个对象都有机会按照职责处理请求。想进我们实验室也不件容易的事情,需要经过层层面试,最后由老总拍板确认是否录用。以前这套做法工作的很好,因为大家都这么做,但是实验室最近扩张了不少,人事处在大肆招人,老总就忙不过来了。顾问林阿标就提出了一个改进方案,让人事处员工面试第一轮,并且人事处员工能够决定是否录用薪资在3000以下的面试者;人事经理面试第二轮,并且能够决定是否录用薪资在6000以下的面试者;老总面试第三轮,并且决定是否录用薪资在6000以上的面试者:import java.util.ArrayList;class Intervie 阅读全文
posted @ 2013-05-23 13:53 biglaojiang 阅读(1320) 评论(3) 推荐(1) 编辑
摘要: 代理模式代理模式是为一个真实对象提供一个代理对象来控制真实对象的访问。真实对象和代理对象通常具有相同的外部接口。最近我们实验室的老总们带着秘书去<海<天|盛>宴>参加聚会了,但是实验室却离不开他们,所以他们留下了电话,于是当遇到事情的时候还是能汇报给远程的老总们知道:class LaoZong { public void report(String reporter, String content) { System.out.println("报告者: " + reporter + ", 内容: " + content); }}p 阅读全文
posted @ 2013-05-22 14:13 biglaojiang 阅读(1048) 评论(2) 推荐(1) 编辑
摘要: 享元模式享元模式的英文说法是:Flyweight Parrern, 又被译作蝇量模式。这两种译法分别说明了其需要解决的问题,解决问题的方式:当我们需要解决许多轻量类引起的资源开销问题的时候(蝇量模式),我们可以用重用共同点的元素(享元模式)的方法来解决。正如我们实验室最近接到的一个订单的最终解决方案一样。前段时间我们的太阳市场部得到一笔大订单:太阳国某富豪要举办一场盛大的聚会,他们需要订购一批女人来满足他的客人们:class NvRen { private String name; private String head; private String body; pr... 阅读全文
posted @ 2013-05-21 15:29 biglaojiang 阅读(1046) 评论(3) 推荐(0) 编辑
摘要: 外观模式外观模式就是为子系统的一系列相关的接口提供一个整合过的接口,从而减少客户类对这些接口的调用成本。最近实验室的老总郁闷的很了,因为女秘书因为太过劳累住院了。以前秘书可以做的事情,老总得要自己做了。这也是为什么我们实验室最近无聊的会开的少的原因:class MeetingRoom { public boolean booking() { return true; } public void prepare() { } public void start() { }}class Message { public void not... 阅读全文
posted @ 2013-05-21 11:04 biglaojiang 阅读(1355) 评论(1) 推荐(1) 编辑
摘要: 装饰者模式装饰者模式就是动态的给一个对象额外的添加一些职责或者说方法,接口。我们还是到实际的应用中来理解这个模式。前段时候,我们实验室因为在市场上的巨大成功,盈利能力得到了很大的提高,所以老总们就不再共享女秘书了:class NvMishu { public void fuwu() { System.out.println("服务"); }}接着又过了一段时间,有位老总不再满足女秘书于女秘书单调的服务,他还要求像水手般的服务。秘书处的人灵机一动,我们不能因为这个就重新招哥秘书,但是我们可以买套水手服让这个秘书穿上啊:class NvMishu { public ... 阅读全文
posted @ 2013-05-17 15:10 biglaojiang 阅读(1363) 评论(0) 推荐(4) 编辑
摘要: 组合模式组合模式也叫部分-整体模式,通常用来解决树形结构的问题,这种模式使树形结构中的节点和分支一致,即有相似的接口。好吧,还是那句话:我并不关心这些个模式,哥只关心我们实验室的盈利能力和成本控制。随着我们实验室不断的扩大,管理起来也越来越不方便了,所以老总们希望我们能有一套管理系统来管理我们实验室。于是我们又开会来讨论这套管理系统的方案。首先是我们的老总介绍了实验室的组织架构:实验室总部----总部正常人工厂----总部财务部----总部市场部----泰国分部--------泰国人妖工厂--------泰国财务部--------泰国市场部----太阳国分部--------太阳兽人工厂---- 阅读全文
posted @ 2013-05-16 16:25 biglaojiang 阅读(490) 评论(0) 推荐(2) 编辑
摘要: 前言公司前段时间推动项目代码质量评估,发现Sonar不错,能够集成checkstyle,findbugs,pmd的大部分功能。Sonar支持三种运行方式: Maven集成,Ant集成,Sonar Runner。下载到官方网站下载Sonar的压缩包,解压到任意目录创建数据库Sonar默认使用嵌入式Derby数据库,如果要迁移到Mysql上,需首先创建一个sonar/sonar的UTF-8的mysql数据库,并授权访问sonar库 mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci; mysql> 阅读全文
posted @ 2013-05-15 17:27 biglaojiang 阅读(401) 评论(0) 推荐(0) 编辑
摘要: 桥接模式桥接模式就是把影响事物对象的多个因素抽象出来从而使两者解偶,那么就能动态的加载变化的因素。好吧,这个定义很抽象,我们还是来聊下具体的事物。最近我们实验室因为一系列的设计模式改进,所以竞争力和盈利都有了长足的发展,所以老总们就计划着冲出亚洲,走向全球了。但是我们以前生产的男人女人都是黑发黄肤的东方系列产品,现在要打入欧美市场,我们就必须要生产金发白肤的西方系列产品,所以我们就定制了各自的产品模板:class Ren {}class NanRen extends Ren { public String gender = "男"; public String hair = 阅读全文
posted @ 2013-05-15 13:58 biglaojiang 阅读(1413) 评论(3) 推荐(2) 编辑
摘要: 适配器模式适配器模式就是将一个类的接口转变成另一个客户类需要的接口,使两个类都不用改动各自的逻辑。通俗点就是亡羊补牢。我们的实验室最近异常尴尬,起因是我们实验室正在环球展出我们的产品,其中有个环节是展示产品出厂时的状态。在展示兽人和人妖的时候没什么问题,但是展示正常男人和女人的时候,却通不过国家有关部门的检查,因为我们的产品出厂的时候都是红果果的啊。class Ren {}class RenYao extends Ren { public String head = "人妖头"; public String body = "人妖身体 - 无"; // 大 阅读全文
posted @ 2013-05-13 15:50 biglaojiang 阅读(440) 评论(1) 推荐(0) 编辑
摘要: 建造者模式建造者模式的核心思想是将一个"复杂对象的构建算法"与它的"部件及组装方式"分离,使得构件算法和组装方式可以独立应对变化;复用同样的构建算法可以创建不同的表示,不同的构建过程可以复用相同的部件组装方式。好吧,我承认上面那句话是Baidu来的,要是能很容易的明白讲的是什么,请切换到漫游模式继续漫游吧。下面我们不聊这些模式了,继续聊我们的实验室,因为模式不发给我们工资,实验室才是发工资的。最近我们的实验室又遇到麻烦了,老总们即使能够同时使用女秘书了也忍不住发火了,因为赶太阳国一大笔兽人订单,到交付的时候才发现,大都数兽人没有头,没有头的兽人能叫兽人吗 阅读全文
posted @ 2013-05-13 14:37 biglaojiang 阅读(1230) 评论(6) 推荐(5) 编辑
摘要: 原型模式原型模式就是需要创建多个实例的时候,以一个为原型,其他实例复制/克隆这个原型来获得相似的实例。我们的实验室最近研究这个模式还是因为市场的原因,市场上由于长久以来的习俗和政策,对女人的需求比较大,所有我们就的扩大女人的生产线,但是由于资金的原因,我们不能投入硬件成本只能改进我们的方法。首先我们得分析女人的构成:class NvRen { private String name; private String head; private String body; private String type; public NvRen(String name, St... 阅读全文
posted @ 2013-05-10 14:48 biglaojiang 阅读(544) 评论(1) 推荐(3) 编辑
摘要: 1. can.Construct首先需要了解的是can.Construct。一个完全的例子如下:var Student = can.Construct({ role : "Student", getRole : function() { return this.role; }}, { _studentId : null, _name : null, _age : null, _gender : null, init : function(stuInfo) { this._studentId = stuInfo.id; ... 阅读全文
posted @ 2013-05-10 08:42 biglaojiang 阅读(1806) 评论(0) 推荐(0) 编辑
摘要: 单例模式单例模式可以说是最简单的设计模式了,当我们需要保持状态一致,或者是缩减资源开销的时候我们都会用到单例模式。就如我们的实验室有三个老总,以前富裕的时候每个老总都有一个女秘书class NvMiShu {}public class Singleton { public static void main(String[] args) { // 老总A的秘书 NvMiShu mishuA = new NvMiShu(); // 老总B的秘书 NvMiShu mishuB = new NvMiShu(); // 老总C的... 阅读全文
posted @ 2013-05-09 17:05 biglaojiang 阅读(759) 评论(7) 推荐(4) 编辑
摘要: 说道设计模式,最先讲到的设计模式必然是工厂系列的设计模式。下面我们就来看下工厂系列设计模式:简单工厂模式简单工厂模式严格来说都不是一种设计模式,只是工厂方法模式的一个简单实现,但是我们平时运用最多就是这个简单工厂模式。简单工厂模式通常用在固定且不大会改变的类族的创建。举个简单的例子,我们现在有个生化实验室来克隆人,所以我们要有一个人的模具人是一个父类:public class Ren {}Ren这个父类有两个子类:男人和女人public class NanRen extends Ren {}public class NvRen extends Ren {}所以我们可以有一个人工厂来分别造出男人 阅读全文
posted @ 2013-05-09 13:49 biglaojiang 阅读(2108) 评论(7) 推荐(3) 编辑
摘要: 写在最前面:一切设计模式都是为了让coder偷懒。没偷到懒得设计模式使用要么是设计模式用错了,要么就是不需要应用到这个设计模式。按目的分,设计模式可以分为:创建型模式:处理对象的创建过程;结构型模式:处理类或者对象的组合;行为型模式:对类或对象怎样交互和怎样分配职责进行描述。创建型模式包含以下5种设计模式:工厂方法模式(Factory Method Pattern)抽象工厂模式(Abstract Factory Pattern)建造者模式(Builder Pattern)原型模式(Prototype Pattern)单例模式(Singleton Pattern)结构型模式包含以下7种设计模式: 阅读全文
posted @ 2013-05-09 10:56 biglaojiang 阅读(724) 评论(2) 推荐(3) 编辑