《GOF设计模式》—原型(Prototype)—Delphi源码示例:原型接口
来源:互联网 发布:印度药品 知乎 编辑:程序博客网 时间:2024/05/21 20:24
示例:原型接口
说明:
(1)、定义
用原型实例指定要创建对象的种类,并且通过拷贝这些原型实例创建新的同类对象。
(2)、结构
原型
Prototype:抽象原型,声明一个克隆自身的接口。
ConcretePrototype:具体原型,实现一个克隆自身的操作。
客户端
Client:让一个原型克隆自身从而创建一个新的对象。
代码:
unit uPrototype;
interface
type
TPrototype = class
private
FState: string;
public
function Clone: TPrototype; virtual; abstract;
//---
property State: string read FState write FState;
end;
TConcretePrototype1 = class(TPrototype)
private
function Copy: TConcretePrototype1;
public
function Clone: TPrototype; override;
end;
TConcretePrototype2 = class(TPrototype)
private
function Copy: TConcretePrototype2;
public
function Clone: TPrototype; override;
end;
TClient = class
private
FPrototype: TPrototype;
public
constructor Create(Prototype: TPrototype);
destructor Destroy; override;
//---
function Opteration: TPrototype;
end;
implementation
function TConcretePrototype1.Clone: TPrototype;
begin
Result := self.Copy;
end;
function TConcretePrototype1.Copy: TConcretePrototype1;
begin
Result := TConcretePrototype1.Create;
Result.State := self.State;
end;
function TConcretePrototype2.Clone: TPrototype;
begin
Result := self.Copy;
end;
function TConcretePrototype2.Copy: TConcretePrototype2;
begin
Result := TConcretePrototype2.Create;
Result.State := self.State;
end;
constructor TClient.Create(Prototype: TPrototype);
begin
FPrototype := Prototype;
end;
destructor TClient.Destroy;
begin
FPrototype.Free;
//---
inherited;
end;
function TClient.Opteration: TPrototype;
var
p: TPrototype;
begin
p := FPrototype.Clone;
Result := p;
end;
end.
procedure TForm1.Button3Click(Sender: TObject);
var
Prototype1: TPrototype;
Client:TClient;
AItem: TPrototype;
begin
{Prototype1 := TConcretePrototype1.Create;
Prototype1.State := 'Prototype1'; }
//---
Prototype1 := TConcretePrototype2.Create;
Prototype1.State := 'Prototype2';
//---
Client := TClient.Create(Prototype1);
try
AItem := Client.Opteration;
showmessage(AItem.State);
AItem.Free;
finally
Client.Free;
end;
end;
- 《GOF设计模式》—原型(Prototype)—Delphi源码示例:原型接口
- 《GOF设计模式》—原型(Prototype)—Delphi源码示例:原型接口
- 《GOF设计模式》—原型(Prototype)—Delphi源码示例:基于实例的原型管理器
- 《GOF设计模式》—原型(Prototype)—Delphi源码示例:基于原型的迷宫1
- 《GOF设计模式》—原型(Prototype)—Delphi源码示例:基于原型的迷宫2
- 《GOF设计模式》—原型(Prototype)—Delphi源码示例:乐谱编辑器
- 《GOF设计模式》—原型(Prototype)—Delphi源码示例:电路设计编辑器
- 《GOF设计模式》—原型(Prototype)—Delphi源码示例:浅拷贝和深拷贝
- 《GOF设计模式》—原型(Prototype)—Delphi源码示例:基于Assign方法的拷贝
- 《GOF设计模式》—原型(Prototype)—Delphi源码示例:基于流操作的拷贝
- 《GOF设计模式》—原型(Prototype)—Delphi源码示例:初始化克隆对象
- 《GOF设计模式》—原型(Prototype)—Delphi源码示例:浅拷贝和深拷贝
- 《GOF设计模式》—原型(Prototype)—Delphi源码示例:基于类的原型管理器(使用TList实现)
- 《GOF设计模式》—原型(Prototype)—Delphi源码示例:基于类的原型管理器(使用TStringList实现)
- 《GOF设计模式》—原型(Prototype)—Delphi源码示例:基于类的原型管理器(使用TList和TObject对象服务实现)
- 《GOF设计模式》—抽象工厂(Abstract Factory)—Delphi源码示例:基于原型的工厂
- 《GOF设计模式》—工厂方法(Factory Method)—Delphi源码示例:工厂方法接口
- 《GOF设计模式》—抽象工厂(Abstract Factory)—Delphi源码示例:抽象工厂接口
- 《GOF设计模式》—原型(Prototype)—Delphi源码示例:浅拷贝和深拷贝
- [Phonegap+Sencha Touch] 移动开发23 Android和IOS的webview点击穿透的缓解办法
- [Phonegap+Sencha Touch] 移动开发24 打包wp8.1的App,运行时输入框聚焦弹出软键盘之后,界面上移而不恢复原位的解决办法
- 如何避免length10000问题
- Linux 2.6 内核阅读笔记 信号
- 《GOF设计模式》—原型(Prototype)—Delphi源码示例:原型接口
- [Phonegap+Sencha Touch] 移动开发25 关于sencha touch在华为、红米、HTC等部分手机下hide事件失效,msgbox无法关闭的解决方案
- Disruptor使用入门
- 我和别人不和人
- [Phonegap+Sencha Touch] 移动开发26 Android下的sencha touch程序,转屏时,Ext.Viewport不能触发orientationchange事件的解决办法
- c语言和C++输入输出流的基本操作
- 谈谈singelton单例模式
- [Phonegap+Sencha Touch] 移动开发27、禁用iOS系统的webapp电话号码自动识别
- 为何给任何人