自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(182)
  • 收藏
  • 关注

原创 Java双色球机选程序(使用Canvas) - 2

import javax.microedition.lcdui.Canvas;import javax.microedition.lcdui.Font;import javax.microedition.lcdui.Graphics;public class MyFont{protected Canvas myCanvas;protected int charColor =

2012-09-01 12:11:46 1072

原创 Java双色球机选程序(使用Canvas) - 1

import javax.microedition.midlet.MIDlet;import javax.microedition.midlet.MIDletStateChangeException;import javax.microedition.lcdui.Canvas;import javax.microedition.lcdui.Command; import javax

2012-09-01 12:11:08 786

原创 Java双色球机选程序(使用List)

import javax.microedition.midlet.MIDlet;import javax.microedition.midlet.MIDletStateChangeException;import javax.microedition.lcdui.Choice;import javax.microedition.lcdui.Command; import javax

2012-09-01 12:05:50 924

原创 Java双色球机选程序(使用Form 、TextField)

import javax.microedition.lcdui.Command;import javax.microedition.lcdui.CommandListener;import javax.microedition.lcdui.Display;import javax.microedition.lcdui.Displayable;import javax.microed

2012-09-01 12:05:12 605

原创 Java双色球机选程序(使用TextBox)

import javax.microedition.midlet.MIDlet;import javax.microedition.midlet.MIDletStateChangeException;import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; im

2012-09-01 12:03:14 778

原创 《重构》 — Delphi示例:影片出租店程序(5、单元测试)

示例:影片出租店程序(单元测试)<br />代码:<br />unit uMovieTest;<br /> <br />interface<br /> <br />uses<br />    Windows,SysUtils,Classes,TestFramework,TestExtensions;<br /> <br />type<br />    TTest = class(TTestCase)<br />    published<br />        procedure Test;<br /> 

2011-04-22 17:52:00 521

原创 《重构》 — Java示例:影片出租店程序(5、单元测试)

<br />示例:影片出租店程序(单元测试)<br />代码:<br />package Movie_Ref;<br />import junit.framework.TestCase;<br />public class MovieTest extends TestCase {<br />    protected void setUp() throws Exception {<br />        super.setUp();<br />    }<br />    <br />    public

2011-04-22 17:51:00 734

原创 《重构》 — Delphi示例:影片出租店程序(6、重构——引入状态模式)

示例:影片出租店程序(重构——引入状态模式) 由于考虑到“影片分类结构”、“费用计算规则”或“常客积点计算规则”在未来可能会发生改变,所以通过引入“状态模式”将“费用计算”和“常客积点计算”中“因条件而异的代码”替换掉。 步骤: 1、移动“金额计算”方法 —— “搬移方法(Move Method)” 由于Rental类的GetCharge方法中使用到了Movie类的属性,所以这暗示应将GetCharge方法移动到Movie类中。 function TMovie.GetCharge(

2011-04-22 10:00:00 723

原创 《重构》 — Java示例:影片出租店程序(6、重构——引入状态模式)

示例:影片出租店程序(重构——引入状态模式) 由于考虑到“影片分类结构”、“费用计算规则”或“常客积点计算规则”在未来可能会发生改变,所以通过引入“状态模式”将“费用计算”和“常客积点计算”中“因条件而异的代码”替换掉。 步骤: 1、移动“金额计算”方法 —— “搬移方法(Move Method)” 由于Rental类的GetCharge方法中使用到了Movie类的属性,所以这暗示应将GetCharge方法移动到Movie类中。 Eclipse工具重构步骤: (1)、选中“

2011-04-22 09:54:00 1132

原创 《重构》 — Delphi示例:影片出租店程序(4、添加功能)

示例:影片出租店程序(添加功能) 说明: 通过对计算逻辑的提炼,可以完成一个HtmlStatement(),并复用原本Statement()内的所有计算。 代码: type     //--顾客     TCustomer = class     private         FName: string;         FRentals: TObjectList;         functio

2011-04-22 09:36:00 551

原创 《重构》 — Java示例:影片出租店程序(4、添加功能)

示例:影片出租店程序(添加功能) 说明: 通过对计算逻辑的提炼,可以完成一个HtmlStatement(),并复用原本Statement()内的所有计算。 代码: package Movie_Ref; import java.util.Enumeration; import java.util.Vector; public class Customer {     private String

2011-04-22 09:31:00 1084

原创 《重构》 — Delphi示例:影片出租店程序(3、重构——分解并重组Statement)

示例:影片出租店程序(重构——分解并重组Statement) 步骤: 1、提炼“金额计算”代码 1.1、提炼“逻辑泥团”——“提炼方法(Extract Method)” Statement()中一个明显的“逻辑泥团”就是case语句,把它提炼到独立函数“AmountFor”中。 function TCustomer.Statement: string; var     totalAmount: double; //--总消费金额

2011-04-15 10:51:00 538

原创 《重构》 — Java示例:影片出租店程序(3、重构——分解并重组Statement)

示例:影片出租店程序(重构——分解并重组Statement) 步骤: 1、提炼“金额计算”代码 1.1、提炼“逻辑泥团”——“提炼方法(Extract Method)” Statement()中一个明显的“逻辑泥团”就是switch语句,把它提炼到独立函数“AmountFor”中。 Eclipse工具重构步骤: (1)、选中代码   (2)、右键选择“Extract Method”   (3)、输入

2011-04-15 10:32:00 2084 1

原创 《重构》 — Java示例:影片出租店程序(2、单元测试)

示例:影片出租店程序(单元测试) 注意: (1)、使用“eclipse”自带的JUnit单元测试   (2)、使用JUnit单元测试工具实现,其中 *其中setUp()方法是构造初始化环境; *测试方法总是以test+方法名构成; 代码:   package movie; import junit.framework.TestCase; public

2011-04-15 10:27:00 996

原创 《重构》 — Delphi示例:影片出租店程序(2、单元测试)

说明: 重构的第一个步骤永远相同:为即将修改的代码建立一组可靠的测试环境。 注意: (1)、使用"CnPack"自带的DUNIT单元测试 (2)、使用DUNIT单元测试工具实现,其中 * TestFrameWork是每个TestCase都必须使用的,后面要使用的TTestCase等类的定义都在TestFrameWork中。 * Dunit是通过RTTI(RunTime Type Information)来寻找并自动注册Tes

2011-04-09 08:28:00 801

原创 《重构》 — Delphi示例:影片出租店程序(1、重构前)

示例:影片出租店程序(1、重构前) 代码: unit uMovie; interface uses     SysUtils,Contnrs; const     REGULAR = 0;     NEW_RELEASE = 1;     CHILDRENS = 2; type     TEnumeration = class     priv

2011-04-09 08:22:00 743

原创 《重构》 — Java示例:影片出租店程序(1、重构前)

说明: 这是一个影片出租店用的程序,计算每一位顾客的消费金额并打印报表(statement),操作者告诉程序:顾客租了哪些影片、租期多长,程序便根据租赁时间和影片类型算出费用。影片分为三类;普通片、儿童片和新片。除了计算费用,还要为常客计算点数;点数会随着"租片种类是否为新片而有不同。 代码: 1、Test.java package movie; public class Test {     /**  

2011-04-09 08:19:00 2651

原创 《GOF设计模式》—访问者(VISITOR)—Delphi源码示例:字符串搜索

示例:字符串搜索 代码:   unit uStringExpression; interface uses     SysUtils, Classes, Contnrs, Dialogs; type     TRegularExpression = class;     TRegularExpressionVisitor = class;     {文字流}

2011-03-31 10:41:00 572

原创 《GOF设计模式》—访问者(VISITOR)—Delphi源码示例:设备

示例:设备 代码:   unit uEquipment; interface uses     SysUtils, Classes, Dialogs, Contnrs, uIterator; type     TEquipmentVisitor = class;     {设备接口}     TEquipment = class     private

2011-03-31 10:38:00 505

原创 《GOF设计模式》—访问者(VISITOR)—Delphi源码示例:编译器

示例:编译器 说明: 考虑一个编译器,它将源程序表示为一个抽象语法树。该编译器需在抽象语法树上实施某些操作以进行"静态语义"分析,例如检查是否所有的变量都已经被定义了。我们可以将每一个类中相关的操作包装在一个独立的对象(称为一个Visitor)中。 代码: unit uCode; interface uses     Classes, Dialogs, Contnrs;

2011-03-31 10:36:00 846

原创 《GOF设计模式》—访问者(VISITOR)—Delphi源码示例:访问者接口

示例:访问者接口 说明: (1)、定义 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 (2)、结构 访问者 Visitor(访问者):为该对象结构中ConcreteElement的每一个类声明一个Visit操作。该操作的名字和特征标识了发送Visit请求给该访问者的那个类。这使得访问者可以确定正被访问元素的具体的类。这样访问者就可以通过该元素的特定接口直接访问它。

2011-03-31 10:32:00 424

原创 《GOF设计模式》—模板方法(TEMPLATE METHOD)—Delphi源码示例:绘图

示例:绘图 说明: 考虑一个支持在屏幕上绘图的类View。一个视图在进入"焦点"(focus)状态时才可设定合适的特定绘图状态(如颜色和字体),因而只有成为"焦点"之后才能进行绘图。View类强制其子类遵循这个规则。 代码:   unit uView; interface uses     Graphics; type     TView = class    

2011-03-25 09:59:00 395

原创 《GOF设计模式》—模板方法(TEMPLATE METHOD)—Delphi源码示例:文档

示例:文档 说明: 考虑一个提供Application和Document类的应用框架。Application类负责打开一个已有的以外部形式存储的文档,如一个文件。一旦一个文档中的信息从该文件中读出后,它就由一个Document对象表示。 OpenDocument是一个模板方法,定义了打开一个文档的每一个主要步骤。 界面:   object Form2: TForm2   Left = 192   Top = 110

2011-03-25 09:55:00 629

原创 《GOF设计模式》—模板方法(TEMPLATE METHOD)—Delphi源码示例:模板方法接口

示例:模板方法接口 说明: (1)、定义 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 (2)、结构 AbstractClass(抽象类):定义抽象的原语操作(primitive operation),具体的子类将重定义它们以实现一个算法的各步骤;实现一个模板方法,定义一个算法的骨架。该模板方法不仅调用原语操作,也调用定义在Abstra

2011-03-25 09:53:00 518

原创 《GOF设计模式》—策略(STRATEGY)—Delphi源码示例:文本换行

示例:文本换行 说明: 有许多算法可对一个正文流进行分行。将这些算法硬编进使用它们的类中是不可取的。我们可以定义一些类来封装不同的换行算法,从而避免这些问题。一个以这种方法封装的算法称为一个策略(strategy)。 代码:   unit uComposition; interface uses     Windows, Classes, Graphics; type

2011-03-19 10:09:00 559

原创 《GOF设计模式》—策略(STRATEGY)—Delphi源码示例:策略接口

示例:策略接口 说明: (1)、定义 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。 (2)、结构   策略: Strategy:定义所有支持的算法的公共接口。Context使用这个接口来调用某ConcreteStrategy定义的算法。 ConcreteStrategy:具体策略。以Strategy接口实现某具体算法。 上下文: Context:用一

2011-03-19 10:07:00 450

原创 《GOF设计模式》—状态(STATE)—Delphi源码示例:状态映射表

示例:状态映射表 说明: 在C++ Programming Style中,Cargil描述了另一种将结构加载在状态驱动的代码上的方法:他使用表(如哈希表)将输入映射到状态转换。对每一个状态,一张表将每一个可能的输入映射到一个后继状态. 代码:   unit uState7; interface uses     SysUtils, Classes, Dialogs, Contnrs;

2011-03-12 09:27:00 691

原创 《GOF设计模式》—状态(STATE)—Delphi源码示例:网络连接

示例:网络连接 说明: 考虑一个表示网络连接的类TCPConnection。一个TCPConnection对象的状态处于若干不同状态之一:连接已建立(Established)、正在监听(Listening)、连接已关闭(Closed)。State模式描述了TCPConnection如何在每一种状态下表现出不同的行为。 代码:   unit uTCPConnection; interface uses  

2011-03-12 09:19:00 604

原创 《GOF设计模式》—状态(STATE)—Delphi源码示例:状态接口

示例:状态接口 说明: (1)、定义 允许一个对象在其内部状态改变时改变它的行为。 别名:状态对象(Objects for States) 说明:状态模式是对分支结构的一种重构。 (2)、结构   环境: Context(环境):定义客户感兴趣的接口。维护一个ConcreteState子类的实例,这个实例定义当前状态。 参与者: State(状态):定义一个接口以封装与Context的一

2011-03-12 09:18:00 652

原创 《GOF设计模式》—观察者(OBSERVER)—Delphi源码示例:时钟

示例:时钟 说明: ClockTimer是一个用于存储和维护一天时间的具体目标。它每秒钟通知一次它的观察者。 我们定义一个DigitalClock类来显示时间。它从一个用户界面工具箱提供的Widget类继承了它的图形功能。 代码: 迭代器uListIterator unit uListIterator; interface uses classes; type

2011-03-03 10:16:00 438

原创 《GOF设计模式》—观察者(OBSERVER)—Delphi源码示例:封装复杂的更新语义

示例:封装复杂的更新语义 说明: 当目标和观察者间的依赖关系特别复杂时,可能需要一个维护这些关系的对象。我们称这样的对象为更改管理器(ChangeManager)。它的目的是尽量减少观察者反映其目标的状态变化所需的工作量。例如,如果一个操作涉及到对几个相互依赖的目标进行改动,就必须保证仅在所有的目标都已更改完毕后,才一次性地通知它们的观察者,而不是每个目标都通知观察者。 ChangeManager是一个中介者模式(Mediator)的实例。通常只有一个ChangeMa

2011-03-03 10:11:00 482

原创 《GOF设计模式》—观察者(OBSERVER)—Delphi源码示例:显式地指定感兴趣的改变

示例:显式地指定感兴趣的改变 说明: 你可以扩展目标的注册接口,让各观察者注册为仅对特定事件感兴趣,以提高更新的效率。当一个事件发生时,目标仅通知那些已注册为对该事件感兴趣的观察者。 代码:   unit uAspects; interface uses     SysUtils, Classes, Dialogs; type     TAspect = (apCa

2011-03-03 10:09:00 611

原创 《GOF设计模式》—观察者(OBSERVER)—Delphi源码示例:拉模型(pull model)

示例:拉模型(pull model) 说明: 目标除最小通知外什么也不送出,而在此之后由观察者显式地向目标询问细节。 代码: unit uPullModel; interface uses     SysUtils, Classes, Dialogs; type     TSubjectState = record         A, B: Integer;

2011-03-03 10:08:00 368

原创 《GOF设计模式》—观察者(OBSERVER)—Delphi源码示例:推模型(push model)

示例:推模型(push model) 说明: 目标向观察者发送关于改变的详细信息,而不管它们需要与否。 代码: unit uPushModel; interface uses   SysUtils, Classes, Dialogs; type     TSubjectState = record         A,B:Integer;     end

2011-03-03 10:07:00 543

原创 《GOF设计模式》—观察者(OBSERVER)—Delphi源码示例:图形用户界面工具箱

示例:图形用户界面工具箱 说明: 许多图形用户界面工具箱将用户应用的界面表示与底下的应用数据分离。定义应用数据的类和负责界面表示的类可以各自独立地复用。当然它们也可一起工作。一个表格对象和一个柱状图对象可使用不同的表示形式描述同一个应用数据对象的信息。表格对象和柱状图对象互相并不知道对方的存在,这样使你可以根据需要单独复用表格或柱状图。但在这里是它们表现的似乎互相知道。当用户改变表格中的信息时,柱状图能立即反映这一变化,反过来也是如此。   这一行为意味着表格对象和棒状

2011-03-03 10:02:00 656

原创 《GOF设计模式》—观察者(OBSERVER)—Delphi源码示例:观察者接口

示例:观察者接口 说明: (1)、定义 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 (2)、结构   目标 Subject(目标):目标知道它的观察者。可以有任意多个观察者观察同一个目标。提供注册和删除观察者对象的接口。 ConcreteSubject(具体目标):将有关状态存入各ConcreteObserver对象。当它的状态发生改变时,向它的各个观察者发

2011-03-03 10:00:00 502

原创 《GOF设计模式》—备忘录(MEMENTO)—Delphi源码示例:一个反映备忘录模式的迭代接口

说明: Dylan中的Collection提供了一个反映备忘录模式的迭代接口。Dylan的集合有一个"状态"对象的概念,它是一个表示迭代状态的备忘录。每一个集合可以按照它所选择的任意方式表示迭代的当前状态;该表示对客户完全不可见。 代码: unit uCollection; interface uses Dialogs,Contnrs; type     TItem = class

2011-03-03 09:58:00 500

原创 《GOF设计模式》—备忘录(MEMENTO)—Delphi源码示例:图形编辑器

示例:图形编辑器 说明: 考虑一个图形编辑器,它支持图形对象间的连线。用户可用一条直线连接两个矩形,而当用户移动任意一个矩形时,这两个矩形仍能保持连接。在移动过程中,编辑器自动伸展这条直线以保持该连接。 我们可用备忘录(Memento)模式实现移动操作取消。 界面:   object Form1: TForm1   Left = 192   Top = 113   Width = 400   Hei

2011-03-03 09:53:00 493

原创 《GOF设计模式》—备忘录(MEMENTO)—Delphi源码示例:备忘录接口

示例:备忘录接口 说明: (1)、定义 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 (2)、结构   Memento(备忘录):备忘录存储原发器对象的内部状态。原发器根据需要决定备忘录存储原发器的哪些内部状态。防止原发器以外的其他对象访问备忘录。备忘录实际上有两个接口,管理者(caretaker)只能看到备忘录的窄接口-它只能将备忘录传递给其他对象。相反,原发器

2011-03-03 09:45:00 456

原创 示例:Visual Studio 2005编译运行C代码

示例:Visual Studio 2005编译运行C代码 1、创建项目 (1)、启动Visual Studio (2)、新建项目,快捷键Ctrl+Shift+N。 (3)、在项目类型中选“Visual C++”---->“Win32”,然后选右侧的“Win32控制台应用程序”。为项目命名。 (4)、接下来在“应用程序向导”中点“下一步”,在“应用程序设置”中选中“附加选项”的“空项目”,这一步是关键。 2、创建文件 (1)、向项目中添加文件,快捷键Ctrl+N。 (2)、

2011-03-01 09:35:00 1032

空空如也

空空如也

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

TA关注的人

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