自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

黄规速博客:学如逆水行舟,不进则退

大道至简、专注精进,总结反思,做更好的自己!

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

原创 重构-改善既有代码的设计:简化条件表达式(七)

简化条件表达式1.Decompose Conditional 分解条件表达式你有一个复杂的条件语句。从if、then、else三个段落中分别提炼出独立函数。程序之中,复杂的条件逻辑是最常导致复杂度上升的地点之一。你必须编写代码来检查不同的条件分支、根据不同的分支做不同的事,然后,你很快就会得到一个相当长的函数。大型函数自身就会使代码的可读性下降,而条件逻辑则会使代码更难

2012-05-29 20:11:05 7108 1

原创 重构-改善既有代码的设计:类数据-重新组织数据的16种方法(六)

重新组织数据:1.Self Encapsulate Field 自封装字段间接访问类的属性:你直接访问一个字段,但与字段之间的耦合关系逐渐变得笨拙。为这个字段建立取值/设值函数,并且只以这些函数来访问字段。 间接访问变量的好处是,子类可以通过覆写一个函数而改变获取数据的途径;它还支持更灵活的数据管理方式,例如延迟初始化。如果你想访问

2012-05-29 16:16:42 6025 3

原创 重构-改善既有代码的设计:(类重构)—对象之间移动特性的八种方法(四)

在面向对象编程过程中,明确该对象的职责。类应该是:做自己该做的事,应尽该尽的义务,1.Move Method 移动函数类的行为做到单一职责不要越俎代庖:你的程序中,有个函数与其所驻类之外的另一个类进行更多的交流:调用后者,或被后者调用。在该函数最常用引用的类中建立一个有着类似行为的新函数。将旧函数编程一个单纯的委托函数,或是将旧函数完全移除。 “搬移函

2012-05-25 15:54:25 4832 1

原创 重构-改善既有代码的设计:函数重构-重新组织函数的九种方法(四)

函数过长或者逻辑太混乱,重新组织和整理函数的代码,使之更合理进行封装。1.Extract Method 提炼函数提炼函数:(由复杂的函数提炼出独立的函数或者说大函数分解成由小函数组成)你有一段代码可以被组织在一起并独立出来。将这段代码放进一个独立函数,并让函数名称解释该函数的用途。void printOwing() { //print banner Sy

2012-05-24 17:18:52 9294 5

原创 重构-改善既有代码的设计:坏代码的味道,编写代码20多宗罪(三)

坏代码的味道,代码编写的22宗罪,主要分为四大类:对象函数,对象数据,对象关系、其他问题等。

2012-05-24 11:01:12 8091 4

原创 重构-改善既有代码的设计:重构原则(二)

1.什么是重构重构(Refactoring):在不改变软件的功能和外部可见性的情况下,为了改善软件的结构,提高可读性、可扩展性和复用性性而对软件进行的改造,对代码内部的结构进行优化。2.为何重构 1)改进软件设计(整理代码)重构和设计是相辅相成的,它和设计彼此互补。有了重构,你仍然必须做预先的设计,但是不必是最优的设计,只需要一个合理的解决方案就够了,如果没有......

2012-05-22 15:42:04 13976 5

原创 AOP与OOP

面向对象的编程(OOP)方法是在面向过程的编程方法基础上进行的改进,而面向方面编程(AOP)方法又是在面向对象编程(OOP)方法的基础上进行改进而来的一种创新的软件开发方法。1.面向领域不同         AOP和OOP虽然在字面上十分相似,但是却是面向不同领域的两种设计思想。OOP(面向对象编程)针对问题领域中以及业务处理过程中存在的实体及其属性和操作进行抽象和封装,面

2012-05-22 10:51:26 4870 5

原创 AOP面向方面编程

1.引言        软件开发的目标是要对世界的部分元素或者信息流建立模型,实现软件系统的工程需要将系统分解成可以创建和管理的模块。于是出现了以系统模块化特性的面向对象程序设计技术。模块化的面向对象编程极度极地提高了软件系统的可读性、复用性和可扩展性。向对象方法的焦点在于选择对象作为模块的主要单元,并将对象与系统的所有行为联系起来。对象成为问题领域和计算过程的主要元素。但面向对象技术

2012-05-21 11:37:02 25495 9

原创 每个程序员都该知道的10大编程格言

每个程序员都该知道的10大编程格言(Kevin Pang):编程格言1:无风不起浪 (There is no smoke without fire)编程格言2:预防为主,治疗为辅(An ounce of prevention is worth a pound of cure:)编程格言3:不要把鸡蛋都放在一个篮子(Don't put all yo

2012-05-17 18:28:51 14185 3

原创 设计原则:面向对象设计原则详解

我们在应用程序开发中,一般要求尽量两做到可维护性和可复用性。 应用程序的复用可以提高应用程序的开发效率和质量,节约开发成本,恰当的复用还可以改善系统的可维护性。而在面向对象的设计里面,可维护性复用都是以面向对象设计原则为基础的,这些设计原则首先都是复用的原则,遵循这些设计原则可以有效地提高系统的复用性,同时提高系统的可维护性。面向对象设计原则和设计模式也是对系统.........

2012-05-17 10:39:21 39947 12

原创 php 设计模式-数据映射模式(应用程序与数据库交互模式)

前面提到的设计模式大大提高了代码的可读性与可维护性。然而,在WEB应用设计与开发中一个基本的需求与挑战:数据库应用,这些设计模式都没有涉及到。数据映射模式使您能更好的组织你的应用程序与数据库进行交互。下面我将用实际代码说明,如果一个表发生变动。我们要修改客户端代码就可以了。特别是游戏项目,需求经常可能会经常变动。修改表结构,可能引起大片代码的改动。首先我们使用pdo进行数据库访

2012-05-15 18:51:18 10450 3

原创 《设计模式》总结和在spring框架的实践

1、感悟设计模式一到二十都是Gof《设计模式》内容的总结,Gof《设计模式》提到的代码都是c++。举例也不是特别典型。这些内容很早之前都已经总结了,现在重新把word笔记整理,算是温故而知新吧。一些地方描述可能有误,在往后的更多实践经验来进一步的修改。 目前我在开发项目的框架里面,使用的模式有给外观模式,代理模式,适配器等模式,这些不是为了模式而去模式,用这些模式去组织代码......

2012-05-14 16:56:51 7889 2

原创 设计模式 ( 二十 ) 访问者模式Visitor(对象行为型)

特此说明:对访问者模式理解不是特别透彻,若有误,请指正,谢谢!1.概述在软件开发过程中,对于系统中的某些对象,它们存储在同一个集合collection中,且具有不同的类型,而且对于该集合中的对象,可以接受一类称为访问者的对象来访问,而且不同的访问者其访问方式有所不同。例子1:顾客在超市中将选择的商品,如苹果、图书等放在购物车中,然后到收银员处付款。在购物过程中,顾客需要对这些商

2012-05-14 16:00:29 14349 1

原创 设计模式 ( 十九 ) 模板方法模式Template method(类行为型)

设计模式 ( 十九 ) 模板方法模式Template method(类行为型)1.概述在面向对象开发过程中,通常我们会遇到这样的一个问题:我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序。但是某些步骤的具体实现是未知的,或者说某些步骤的实现与具体的环境相关。例子1:银行业务办理流程在银行办理业务时,一般都包含几个基本固定步骤:取号排队->办理具体业务-

2012-05-14 13:15:16 34201 5

原创 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)

设计模式 ( 十八 ) 策略模式Strategy(对象行为型)1.概述 在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。如查找、排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个

2012-05-12 15:50:25 291587 53

原创 设计模式 ( 十七) 状态模式State(对象行为型)

设计模式 ( 十七) 状态模式State(对象行为型)1.概述在软件开发过程中,应用程序可能会根据不同的情况作出不同的处理。最直接的解决方案是将这些所有可能发生的情况全都考虑到。然后使用if... ellse语句来做状态判断来进行不同情况的处理。但是对复杂状态的判断就显得“力不从心了”。随着增加新的状态或者修改一个状体(if else(或switch case)语句的增多或

2012-05-11 17:26:22 103590 33

原创 设计模式 ( 十六 ) 观察者模式Observer(对象行为型)

设计模式 ( 十五 ) 观察者模式Observer(对象行为型)1.概述一些面向对象的编程方式,提供了一种构建对象间复杂网络互连的能力。当对象们连接在一起时,它们就可以相互提供服务和信息。通常来说,当某个对象的状态发生改变时,你仍然需要对象之间能互相通信。但是出于各种原因,你也许并不愿意因为代码环境的改变而对代码做大的修改。也许,你只想根据你的具体应用环境而改进通信代码。或

2012-05-11 11:58:24 30141 4

原创 设计模式 ( 十五 ) 中介者模式Mediator(对象行为型)

设计模式 ( 十五 ) 中介者模式Mediator(对象行为型)1.概述在面向对象的软件设计与开发过程中,根据“单一职责原则”,我们应该尽量将对象细化,使其只负责或呈现单一的职责,即将行为分布到各个对象中。对于一个模块或者系统,可能由很多对象构成,而且这些对象之间可能存在相互的引用,在最坏的情况下,每一个对象都知道其他所有的对象,这无疑复杂化了对象之间的联系。虽然将

2012-05-10 17:40:11 10155 2

原创 设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型)

1.概述类中的面向对象编程封装应用逻辑。类,就是实例化的对象,每个单独的对象都有一个特定的身份和状态。单独的对象是一种组织代码的有用方法,但通常你会处理一组对象或者集合。集合不一定是均一的。图形用户界面框架中的 Window 对象可以收集任意数量的控制对象 - Menu、Slider 和 Button。并且,集合的实现可以有多种方式:PHP 数字是一个集合,但也是一个散列表,一个链接列

2012-05-10 13:14:04 9563 3

原创 设计模式 ( 十三 ) 命令模式Command(对象行为型)

设计模式 ( 十三 ) 命令模式Command(对象行为型)1.概述 在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计,使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活。例子1:电视机遥控器 :......

2012-05-09 16:31:35 25856 2

原创 设计模式 ( 十二 ) 职责链模式(Chain of Responsibility)(对象行为

设计模式(十二)职责链模式(Chain of Responsibility)(对象行为型)1.概述       你去政府部门求人办事过吗?有时候你会遇到过官员踢球推责,你的问题在我这里能解决就解决,不能解决就推卸给另外个一个部门(对象)。至于到底谁来解决这个问题呢?政府部门就是为了可以避免屁民的请求与官员之间耦合在一起,让多个(部门)对象都有可能接收请求,将这些(部门)对象连接

2012-05-08 18:35:35 41462 4

原创 设计模式(十一)代理模式Proxy(结构型)

设计模式(十一)代理模式Proxy(结构型)1.概述 因为某个对象消耗太多资源,而且你的代码并不是每个逻辑路径都需要此对象, 你曾有过延迟创建对象的想法吗 ( if和else就是不同的两条逻辑路径) ? 你有想过限制访问某个对象,也就是说,提供一组方法给普通用户,特别方法给管理员用户?以上两种需求都非常类似,并且都需要解决一个更大的问题:你如何提供一致的接口给某个对...

2012-05-08 11:51:03 135355 17

原创 设计模式(十)享元模式Flyweight(结构型)

设计模式(十)享元模式Flyweight(结构型)说明:相对于其它模式,Flyweight模式在PHP实现似乎没有太大的意义,因为PHP的生命周期就在一个请求,请求执行完了,php占用的资源都被释放。我们只是为了学习而简单做了介绍。1. 概述面向对象技术可以很好地解决系统一些灵活性或可扩展性或抽象性的问题,但在很多情况下需要在系统中增加类和对象的个数。当对象数量太多时,将导

2012-05-07 10:16:30 15459 3

原创 设计模式(九)外观模式Facade(结构型)

设计模式--外观模式Facade(结构型):1. 概述 外观模式,我们通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性。例子1:一个电源总开关可以控制四盏灯、一个风扇、一台空调和一台电视机的启动和关闭。该电源总开关可以同时控制上述所有电器设备,电源总开关即为该系统的外观模式设计。2....

2012-05-04 16:59:54 127263 20

原创 设计模式(八)装饰器模式Decorator(结构型)

设计模式(八)装饰器模式Decorator(结构型)1. 概述 若你从事过面向对象开发,实现给一个类或对象增加行为,使用继承机制,这是所有面向对象语言的一个基本特性。如果已经存在的一个类缺少某些方法,或者须要给方法添加更多的功能(魅力),你也许会仅仅继承这个类来产生一个新类—这建立在额外的代码上。 通过继承一个现有类可以使得子类在拥有自身方法的同时...........................

2012-05-03 17:48:46 36746 7

原创 设计模式(七)组合模式Composite(结构型)

设计模式(七)组合模式Composite(结构型)1. 概述在数据结构里面,树结构是很重要,我们可以把树的结构应用到设计模式里面。例子1:就是多级树形菜单。例子2:文件和文件夹目录2.问题我们可以使用简单的对象组合成复杂的对象,而这个复杂对象有可以组合成更大的对象。我们可以把简单这些对象定义成类,然后定义一些容器类来存储这些简单对象。客户端代码必须区别对...

2012-05-03 14:21:46 60919 10

原创 设计模式(六)桥连模式Bridge(结构型)

设计模式(六)桥连模式Bridge(结构型)1. 概述 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?例子1:设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颜色,如红色、绿色、...............

2012-05-02 19:40:54 43687 20

原创 设计模式(五)适配器模式Adapter(结构型)

设计模式(五)适配器模式Adapter(结构型)1. 概述: 接口的改变,是一个需要程序员们必须(虽然很不情愿)接受和处理的普遍问题。程序提供者们修改他们的代码;系统库被修正;各种程序语言以及相关库的发展和进化。 例子1:iphone4,你即可以使用UBS接口连接电脑来充电,假如只有iphone没有电脑,怎么办呢?苹果提供了iphone电源适配器。.........

2012-05-02 16:02:58 69784 15

原创 设计模式(四)原型模式Prototype(创建型)

设计模式(四)原型模式Prototype1. 概述我们都知道,创建型模式一般是用来创建一个新的对象,然后我们使用这个对象完成一些对象的操作,我们通过原型模式可以快速的创建一个对象而不需要提供专门的new()操作就可以快速完成对象的创建,这无疑是一种非常有效的方式,快速的创建一个新的对象。例子1:孙悟空拔下一嘬猴毛,轻轻一吹就会变出好多的孙悟空来。例.....................

2012-05-02 10:19:47 28215 12

Ttrift 访问hive的php客户包

Ttrift 访问hive的php客户包

2014-02-11

计算机操作系统教程+张尧学+清华版 第三版.pdf

计算机操作系统教程+张尧学+清华版 第三版.pdf

2012-09-28

谷歌三大核心技术

TheGoogleFileSystem中文版, MapReduce中文版, BigTable中文版,

2012-02-09

JAVA反射机制和原理

JAVA反射机制和原理JAVA反射机制和原理JAVA反射机制和原理

2010-08-15

详细介绍 jpa 开发文档

详细介绍 jpa 开发文档详细介绍 jpa 开发文档详细介绍 jpa 开发文档详细介绍 jpa 开发文档

2010-08-15

memcache软件和+教程

memcache软件和+教程memcache软件和+教程

2010-04-02

经典总结php效率高写法!

经典总结,php效率高写法,php效率高写法

2010-04-02

LAMP环境搭建教程!

LAMP环境搭建,相当经典!希望对初学者有用

2010-04-02

Flex初学者中文教程

Flex初学者中文教程,Flex初学者中文教程Flex初学者中文教程

2010-01-12

flex例子大全,对初学者很受用

flex例子大全,flex例子大全,flex例子大全

2010-01-12

Flex3企业级Web应用系统设计与实现

Flex3企业级Web应用系统设计与实现,很不错哦

2010-01-12

ajax与php源代码

ajax与php源代码ajax与php源代码ajax与php源代码ajax与php源代码

2009-05-22

EXCEL内容导入mysql

EXCEL内容导入mysqlEXCEL内容导入mysqlEXCEL内容导入mysqlEXCEL内容导入mysql

2009-05-22

php单例模式和工厂模式

php单例模式php单例模式php单例模式php单例模式

2009-05-22

ajax无刷新上传图片实例

ajax无刷新上传图片实例,很实用!学习ajax的好帮手

2009-05-22

最全面的php图片上传类

最全面的php图片上传:对图像加水印和 缩略图片

2009-05-15

ajax开发大全应用实例

ajax开发大全应用实例 ,包括Xajax中文手册(第一版).mht

2008-12-13

PHP常用函数大全使用

PHP常用函数大全,有很多实例!欢迎使用

2008-12-13

mysql手册 包括mysql优化和管理

mysql手册 包括mysql优化和管理,最新最全面的mysql手册

2008-11-29

深入浅出的mysql优化大全

深入浅出的mysql优化大全!网易数据库专家写的

2008-11-29

PHPEXCEL使用小结

PHPEXCEL使用小结,告诉你PHPEXCEL使用

2008-11-08

Ajax与php课本源代码

Ajax与php课本源代码,这是最新的Ajax与php结合使用

2008-10-07

JAVASCRIPT经典教程

JAVASCRIPT经典教程,轻松学好JS

2008-10-07

Javascript特效大全

Javascript特效大全,学习JS不再烦恼

2008-10-07

apache+PHP+MySQL一键安装软件!

PHP一键安装软件,很实用,特别对那些php初学者很有用处

2008-10-07

VBA编程大全 学习VBA

VBA编程大全,包括所有控件的使用,和一些实现技巧

2008-09-25

Northwind(罗斯文+示例数据库)

Northwind(罗斯文+示例数据库)学习access和VBA好处

2008-09-25

access实例,轻松学习

access实例,轻松学习,运用VBA语言实现各种肝功能

2008-09-25

editor

editor editor editor

2008-02-29

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

TA关注的人

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