自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小青

实现自己吹下的牛逼和许下的诺言,是这个世界上最开心的事情之一

原创 设计模式之总纲

一:各种模式之间的关系 创建型模式包括抽象工厂模式,建造者模式,工厂方法模式,原型模式,单例模式共计5种。 创建型模式抽象了实例化过程,帮助某个系统独立于如何创建、组合以及表示该系统所包含的对象。当系统向着更加依赖于对象复合而不是类的继承演变时,创建型模式就变得更为重要。创建型模式始终围绕两个...

2017-09-23 23:11:32

阅读数 183

评论数 0

原创 设计模式之解释器模式

解释器模式要解决的问题是,当一种特定类型的问题发生至足够高的频率后,那么就值得将此问题中的各个实例表述为一个简单预言中的句子,以此来构建一个解释器,这个解释器通过这些句子来解决该问题。 GOF对解释器模式的定义是:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释...

2017-09-23 22:46:58

阅读数 186

评论数 0

原创 设计模式之迭代器模式

迭代器模式曾经是一种最常见、最简单的设计模式,提供了一种顺序访问某个集合中所有元素的解决方案,而不用了解元素的底层操作。现在的新兴语言都将迭代器集成了进去,但是了解迭代器模式的实现对理解面向对象开发而言仍然尤其意义。 GOF对迭代器模式的定义是:提供一种方法顺序访问聚合对象中的各个元素,而又不暴...

2017-09-23 21:27:33

阅读数 199

评论数 0

原创 设计模式之职责链模式

GOF对职责链模式的定义是:使各个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合程度,将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他们为之。 先看基本代码 //处理请示的接口 public abstract class Handler { protected...

2017-09-23 16:22:43

阅读数 205

评论数 0

原创 设计模式之访问者模式

GOF对访问者模式的定义是:表示一个作用于某对象结构中各元素的操作,它使了可以在不改变各元素的类的前提下,定义作用于这些元素的新操作。基本代码如下 //抽象访问者 public abstract class Visitor { public abstract void VisitConcret...

2017-09-23 15:51:09

阅读数 273

评论数 0

原创 设计模式之命令模式

GOF对命令模式的定义是:将一个请求封装成对象,从而使用户可用不同的请求对客户进行参数化,对请求排队或记录请求日志,并支持可撤销操作。 先看基本代码 //抽象命令 public abstract class Command { protected Receiver receiver; p...

2017-09-20 00:17:25

阅读数 296

评论数 0

原创 设计模式之中介者模式

GOF对中介者模式的定义是:用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式的互相引用,从而使其耦合松散,二期额可以独立地改变他们之间的交互。 来看看基本代码 /** * * @author ricardo * @Time 下午9:08:52 * @Function:...

2017-09-19 23:52:49

阅读数 276

评论数 0

原创 设计模式之备忘录模式

GOF对备忘录模式的定义就是:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象回复到原先的状态。 来看看备忘录模式的基本代码 /** * * @author ricardo * @Time 下午8:07:41 * @Function:...

2017-09-18 21:56:52

阅读数 342

评论数 0

原创 设计模式之观察者模式

GOF对观察者模式的定义是:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生改变时,会通知所有的观察者对象,让他们自动更新自己。先来看基本代码。 /** * * @author ricardo * @Time 下午9:31:55 * ...

2017-09-18 21:29:05

阅读数 334

评论数 0

原创 设计模式之状态模式

GOF对状态模式的定义是:当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类。先看基本代码 /** * * @author ricardo * @Time 上午12:31:24 * @Function:抽象状态类 * */ public abstract cl...

2017-09-16 14:21:54

阅读数 251

评论数 0

原创 设计模式之策略模式

GOF对策略模式的定义:策略模式定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户。先看基本代码 /** * * @author ricardo * @Time 下午10:55:43 * @Function:抽象策略类 * */ publ...

2017-09-14 23:05:37

阅读数 259

评论数 0

原创 设计模式之模板方法模式

GOF对模板方法模式的定义:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。Template使得子类可以不改变一个算法的结构而重新定义算法的某些特定步骤。先看下基本代码结构。 public abstract class AbstractClass { public abstract void...

2017-09-13 21:55:28

阅读数 184

评论数 0

原创 设计模式之代理模式

GOF对代理模式的定义是:为其他对象提供一种代理以控制对这个对象的访问。先看基本代码 public abstract class Subject { public abstract void Request(); }public class RealSubject extends Subjec...

2017-09-12 22:16:32

阅读数 208

评论数 0

原创 设计模式之外观模式

GOF对外观模式的定义是:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易被使用。看下基本代码 现在有ABC三个子系统类 public class SubA { public void methodA() { System.out.prin...

2017-09-12 21:31:09

阅读数 196

评论数 0

原创 设计模式之享元模式

GOF对享元模式的定义:运用共享技术有效地支持大量细粒度的对象。下面给出基本代码 /** * * @author ricardo * @Time 下午10:25:48 * @Function:抽象享元类 * */ public abstract class Flyweight { ...

2017-09-11 23:32:24

阅读数 203

评论数 0

原创 设计模式之组合模式

GOF对组合模式的定义是:将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。来看基本代码 /** * * @author ricardo * @Time 下午10:33:52 * @Function:树中分支结点与叶子节点的抽象父...

2017-09-06 23:56:34

阅读数 197

评论数 0

原创 设计模式之装饰者模式

GOF对装饰者模式的定义式 :动态的给一个对象添加一些额外的职责,就增加功能来说,装饰者模式比生成子类会更加灵活。先看基本代码。 /** * * @author ricardo * @Time 下午9:11:18 * @Function:组件抽象类 * */ public abst...

2017-09-05 22:27:23

阅读数 306

评论数 0

原创 设计模式之适配器模式

GOF对适配器的定义是:将一个类的接口转换成客户希望的另外一个接口,适配器模式使得原本由于接口不兼容而不能在一起工作的哪些类可以在一起工作。 基本代码如下: public class Target { public void Request() { System.out.println(...

2017-09-03 19:05:31

阅读数 222

评论数 0

原创 设计模式之桥接模式

GOF对桥接模式的定义是:将抽象部分与它的实现部分分离,使它们都可以独立地变化。下面是基本代码的实现 /** * * @author ricardo * @Time 下午4:31:53 * @Function:抽象的Implementor * */ public abstract ...

2017-09-03 17:23:52

阅读数 252

评论数 0

原创 设计模式之原型模式

在GOF对原型模式的定义是:用原型模式指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 所谓的原型模式其实就是依托一个已经实例化的对象去创建另外一个可以进行定制的对象,而不需要知道创建过程中的具体细节。原型模式的基本代码如下: /** * * @author ricardo * ...

2017-09-03 14:20:32

阅读数 268

评论数 0

原创 设计模式之建造者模式

GOF对建造者模式的定义是:将一个复杂对象的构建与它的表示分离,使得同样的构建过程,可以创建不太的表示。我们先看看建造者的基本代码。 /** * * @author ricardo * @Time 下午10:07:18 * @Function:抽象的构造者类 * */ public ...

2017-08-29 23:52:21

阅读数 241

评论数 0

原创 设计模式之单例模式

GOF对单例模式的定义:保证类仅有一个实例,并提供一个访问它的全局访问点。 单例模式的的基本代码比较简单 /** * * @author ricardo * @Time 下午10:40:11 * @Function:定义单例模式类 * */ public class Single...

2017-08-28 23:36:34

阅读数 254

评论数 0

原创 设计模式之抽象工厂模式

小青的面包店开张了一段时间后,生意稳中有升,但是远远没达到小青的预期,因为不是所有人都吃面包,小青就想干脆也卖披萨试试,这时候,小青发现,如果按照制作面包的步骤来重新走一遍,确实满足了开放-封闭的原则,但是呢,从新建立Factory,投入有点太大了。小青觉得自己有必要再想想。这时候,小青突然醒悟过...

2017-08-27 16:56:50

阅读数 223

评论数 0

原创 设计模式之工厂方法模式

工厂,顾名思义在于对相关产品的批量添加,在开发中指将对象创建交给某个类,使得开发者不需要在意对象的创建。举个例子,小青我的面包店即将开业了。 /** * * @author 小青 * @Time 下午12:30:34 * @Function:小青的面包店 * */ public c...

2017-08-27 14:21:32

阅读数 205

评论数 0

原创 迪米特法则

迪米特法则的定义——如果两个类之间不必直接通信,则这两个类不应该发生直接的相互作用。如果其中一个类需要调用另一个类的某个方法,应该通过第三方来转发这个调用。 迪米特法则也称为最少知识原则(talk only to your immediate friends),就是说一个对象应该尽可能少地了解其...

2017-08-27 04:26:10

阅读数 221

评论数 0

原创 合成/聚合复用原则

合成/聚合复用原则的定义——尽量不要使用类继承,而尽量使用合成/聚合。 合成/聚合都是关联关系的特殊种类,聚合表示比较“弱”的拥有关系,具体表现是甲对象中可以包括乙对象,但乙对象不是甲对象的一部分;合成则是一种比较“强”的拥有关系,体现的是严格的整体与部分之间的关系,并且整体与部分拥有相同的生命周...

2017-08-27 03:44:39

阅读数 350

评论数 0

原创 依赖倒转原则

依赖倒转原则的定义——程序的高层模块不应依赖于底层模块,但两者都应依赖于抽象;抽象不应该依赖于具体细节,而细节应该依赖于抽象。也就是说,面向对象编程应该针对接口编程而不是针对实现编程。 在开发中使用依赖倒转原则需要遵循以下规范: 每个类都尽量继承自接口或者抽象类,有了抽象才有可能依赖倒...

2017-08-27 03:08:55

阅读数 216

评论数 0

原创 开放-封闭原则

开放-封闭原则的定义是——程序的实体对象(模块、类、函数等)应该可以进行扩展,但不应该可以修改。 开放-封闭原则具有两个特征: 1.对于扩展是开放的; 2.对于修改是闭合的。 开放-封闭原则是面向对象开发中所有设计原则的核心。 当经过实践,在面向对象编程时,如果要实现一个新的功能,添加一...

2017-08-27 01:59:34

阅读数 203

评论数 0

原创 里氏代换原则

里氏代换原则的定义是——子类型必须能够替换掉他们的父类型。 在学习类的继承时有一个概念,如果子类继承自父类,那么子类就应该能以父类的身份出现。简单说,如果一个软件实体使用的是一个父类的话,那么就肯定适用其子类,并且该软件实体察觉不到父类对象和子类对象的区别。 举个例子,有个很厉害的老木匠,周边...

2017-08-27 00:40:53

阅读数 268

评论数 0

原创 单一职责原则

单一职责原则的定义比较简单——对于一个类,应该只有一个引起它变化的原因。 当我们在进行软件开发的时候,经常会给已经设计的一个类新增各种各样的功能,或许是出于需求变更,或许是因为出于开发量的考量,一个类就在这样或那样的原因下变得逐渐臃肿庞大而且不方便管理。例如一个负责接受用户发来信息的类,也被设计...

2017-08-26 20:22:35

阅读数 244

评论数 0

原创 自定义实现栈结构

栈是限制仅在表的一端进行插入和删除运算的线性表 (1)通常称插入、删除这一端为栈顶,另一端称栈底; (2)当表中没有元素时称空栈; (3)栈为先进后出(First In Last out)的线性表,简称FILO表(也作后进先出,LIFO) 栈的修改是按先进后出的原则进行,每次删除(退栈)的总是当前...

2017-08-21 16:38:28

阅读数 1301

评论数 0

原创 SFDC之trigger那些事儿

初学Salesforce 的Apex开发,trigger可以说的开发者的基本功了。 trigger的定义模式如下: trigger TriggerName on ObjectName (trigger_events) { code_block } triggerName相当于trigg...

2017-08-21 12:16:23

阅读数 470

评论数 0

原创 经典算法之汉诺塔求解问题

法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片...

2017-08-20 22:28:26

阅读数 473

评论数 0

原创 经典算法之杨辉三角

杨辉三角,是二项式系数在三角形中的一种几何排列。在欧洲,这个表叫做帕斯卡三角形。 实现方案一:打印出来的三角形呈直角 public static int LINE = 8; public static void main(String[] args) { int[] a...

2017-08-20 21:30:26

阅读数 1334

评论数 0

原创 经典算法系列之不死神兔

Fibonacci为1200年代的欧洲数学家,在他的着作中曾经提到:「若有一只免子每个月生一只小免子,一个月后小免子也开始生产。起初只有一只免子,一个月后就有两只免子,二个月后有三只免子,三个月后有五只免子(小免子投入生产)......。 这就是著名的不死神兔问题,即Fibonacci数列,一般...

2017-08-20 21:16:13

阅读数 3127

评论数 0

原创 数组的简单排序(冒泡排序,简单选择排序,插入排序)

数组作为应用最为广泛的一种数据结构,对数组实现简单排序的思想是每一个开发者的基本功。虽然实际的业务开发中用的很少,但是作为开发者,我们更看重的是其中所体现的一种思想。 现设定一个数组 num int[] num = new int[] { 1, 2, 3, 5, 4, 7, 1, 9, 2, ...

2017-08-20 20:59:24

阅读数 285

评论数 0

原创 Apex学习:一个计划任务与批处理的Demo

在一些业务场景下,我们需要指定时间,定期执行某段代码,比如定期清理垃圾,同步数据等。接下来以生日提醒为例完成一个Demo。 创建一个对象Friend__c,里面包含字段:生日birthday__c和公式字段生日提醒时间remainder__c等于生日日期-3。计划任务的代码如下: global ...

2017-07-26 21:43:01

阅读数 671

评论数 0

原创 CSS盒子模型初解

我们如果以面向对象的角度去考虑CSS提供的盒子模型,可以建立一个BOX对象进行表示: public class Box{ // 外边距:控制与父级元素的距离 public Margin margin; // 边框:控制边框的样式 public Border border; // 内边距...

2017-07-25 17:42:44

阅读数 302

评论数 0

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