自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小青

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

  • 博客(38)
  • 资源 (1)
  • 问答 (2)
  • 收藏
  • 关注

原创 设计模式之总纲

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

2017-09-23 23:11:32 390

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

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

2017-09-23 22:46:58 411

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

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

2017-09-23 21:27:33 404

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

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

2017-09-23 16:22:43 392

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

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

2017-09-23 15:51:09 489

原创 设计模式之命令模式

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

2017-09-20 00:17:25 488

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

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

2017-09-19 23:52:49 501

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

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

2017-09-18 21:56:52 569

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

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

2017-09-18 21:29:05 536

原创 设计模式之状态模式

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

2017-09-16 14:21:54 445

原创 设计模式之策略模式

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

2017-09-14 23:05:37 438

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

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

2017-09-13 21:55:28 386

原创 设计模式之代理模式

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

2017-09-12 22:16:32 384

原创 设计模式之外观模式

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

2017-09-12 21:31:09 385

原创 设计模式之享元模式

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

2017-09-11 23:32:24 377

原创 设计模式之组合模式

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

2017-09-06 23:56:34 383

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

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

2017-09-05 22:27:23 484

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

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

2017-09-03 19:05:31 390

原创 设计模式之桥接模式

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

2017-09-03 17:23:52 444

原创 设计模式之原型模式

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

2017-09-03 14:20:32 490

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

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

2017-08-29 23:52:21 450

原创 设计模式之单例模式

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

2017-08-28 23:36:34 425

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

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

2017-08-27 16:56:50 407

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

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

2017-08-27 14:21:32 387

原创 迪米特法则

迪米特法则的定义——如果两个类之间不必直接通信,则这两个类不应该发生直接的相互作用。如果其中一个类需要调用另一个类的某个方法,应该通过第三方来转发这个调用。迪米特法则也称为最少知识原则(talk only to your immediate friends),就是说一个对象应该尽可能少地了解其他对象。从而降低类之间的耦合,这样做的一个可能后果是系统中存在大量的中介类,这在一定程度上会增加系统的

2017-08-27 04:26:10 384

原创 合成/聚合复用原则

合成/聚合复用原则的定义——尽量不要使用类继承,而尽量使用合成/聚合。合成/聚合都是关联关系的特殊种类,聚合表示比较“弱”的拥有关系,具体表现是甲对象中可以包括乙对象,但乙对象不是甲对象的一部分;合成则是一种比较“强”的拥有关系,体现的是严格的整体与部分之间的关系,并且整体与部分拥有相同的生命周期,比如:鱼和鱼群属于聚合,手臂和身体属于合成关系。优先使用对象的合成/聚合有助于保持系统的每个

2017-08-27 03:44:39 686

原创 依赖倒转原则

依赖倒转原则的定义——程序的高层模块不应依赖于底层模块,但两者都应依赖于抽象;抽象不应该依赖于具体细节,而细节应该依赖于抽象。也就是说,面向对象编程应该针对接口编程而不是针对实现编程。在开发中使用依赖倒转原则需要遵循以下规范:每个类都尽量继承自接口或者抽象类,有了抽象才有可能依赖倒转变量显示的类型尽量(不是一定)是接口或者抽象类类尽量避免从具体类派生,当然如果是在项目维护阶段,基本

2017-08-27 03:08:55 462

原创 开放-封闭原则

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

2017-08-27 01:59:34 636

原创 里氏代换原则

里氏代换原则的定义是——子类型必须能够替换掉他们的父类型。在学习类的继承时有一个概念,如果子类继承自父类,那么子类就应该能以父类的身份出现。简单说,如果一个软件实体使用的是一个父类的话,那么就肯定适用其子类,并且该软件实体察觉不到父类对象和子类对象的区别。举个例子,有个很厉害的老木匠,周边的邻居都找他做家具,老木匠还有个大徒弟,不但学全了老木匠的本事还青出于蓝而胜于蓝。后来老木匠干不动了,

2017-08-27 00:40:53 2293

原创 单一职责原则

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

2017-08-26 20:22:35 412

原创 自定义实现栈结构

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

2017-08-21 16:38:28 1724

原创 SFDC之trigger那些事儿

初学Salesforce 的Apex开发,trigger可以说的开发者的基本功了。trigger的定义模式如下:trigger TriggerName on ObjectName (trigger_events) { code_block}triggerName相当于trigger的命名,ObjectName指trigger绑定的类的名字,trigger_events指能引起代

2017-08-21 12:16:23 1193

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

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

2017-08-20 22:28:26 1071

原创 经典算法之杨辉三角

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

2017-08-20 21:30:26 3184

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

Fibonacci为1200年代的欧洲数学家,在他的着作中曾经提到:「若有一只免子每个月生一只小免子,一个月后小免子也开始生产。起初只有一只免子,一个月后就有两只免子,二个月后有三只免子,三个月后有五只免子(小免子投入生产)......。这就是著名的不死神兔问题,即Fibonacci数列,一般习惯称之为费氏数列,举例如下: 1、1 、2、3、5、8、13、21、34、55、89......

2017-08-20 21:16:13 4987

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

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

2017-08-20 20:59:24 879

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

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

2017-07-26 21:43:01 1464

原创 CSS盒子模型初解

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

2017-07-25 17:42:44 486

服务器Tomcat

没有各种广告的福利---tomcat ,后续上传其他配套文件

2015-08-20

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

TA关注的人

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