我在维基百科上看过这个解释,特别是C++示例,并且没有认识到只定义3个类,创建实例和调用它们之间的区别,以及那个例子.我看到的只是将其他两个类放入流程中,无法看到哪里会有好处.现在我肯定我错过了一些明显的东西(树木) - 有人可以用一个明确的现实世界的例子来解释它吗?
到目前为止,我可以从答案中得到什么,在我看来,这只是一种更为复杂的方式:
have an abstract class: MoveAlong with a virtual method: DoIt()
have class Car inherit from MoveAlong,
implementing DoIt() { ..start-car-and-drive..}
have class HorseCart inherit from MoveAlong,
implementing DoIt() { ..hit-horse..}
have class Bicycle inherit from MoveAlong,
implementing DoIt() { ..pedal..}
now I can call any function taking MoveAlong as parm
passing any of the three classes and call DoIt
Isn't this what Strategy intents? (just simpler?)
Run Code Online (Sandbox Code Playgroud)
[编辑 - 更新]我在上面引用的函数被替换为另一个类,其中MoveAlong属于属性,根据需要根据在这个新类中实现的算法设置.(与接受的答案中的内容类似.)
[编辑 - 更新] …
在组织python模块时,我的Mac OS X系统很乱.我在我的硬盘上到处都是软件包,没有特定的系统来组织它们.
你如何保持一切可管理?
我已经更新了我的TortoiseSVN客户端,现在我在尝试更新或提交到不同的存储库时遇到错误:
请求的名称有效,但未找到所请求类型的数据
关于如何解决这个问题的任何想法?Internet Explorer显示适当的URL就好了.
TortoiseSVN 1.5.3,Build 13783.
我有一个带有视图的Eclipse RCP应用程序的插件.在RCP应用程序中发生事件后,插件被实例化,调用其方法来填充插件的模型,但是我无法找到如何在不进入"Show View ..."菜单的情况下显示视图.
我认为工作台单例中会有一些东西可以处理这个问题,但我还没有发现任何地方.
我需要一个完整的Object Pascal语法(最好是Delphi 2009).某些语法由帮助文件提供,但并未提供所有信息.所以我开始收集松散的信息.最近我将这些添加到或多或少完整的语法描述(EBNF之类).
虽然它看起来很广泛,但仍然存在漏洞,我确信缺少部分(特别是在.NET语法中).所以我问SO Delphi社区.您有任何信息或纠正错误吗?作为回报,我为社区提供了完整的语法.它可能会节省你一些时间;-).将来,我喜欢为其他语言做同样的事情(比如C#/ C++/Java).
我已经给出了语法描述:My Syntax sofar.或者如果您喜欢Text版本.(XHTML是从文本版本生成的).
请注意,语法集中在语法部分,因为词法部分实际上不是问题.
更新
我有一个新版本的Delphi语法.HTML版本.它包括包括2009年在内的各种版本.棱镜扩展仍在待办事项清单上.而且我不确定我是否会将它们保持在一起.
对于真正的纯粹主义者,它还包含完整的汇编程序代码(它不支持完整的100%的英特尔集,但只丢失了一些指令.).
当收到错误报告或it-doesnt-work消息时,我的姓名首字母问题始终是什么版本?由于不同的构建处于测试的许多阶段,因此规划和部署这通常是一个非常重要的问题.
我是发布Java JAR(ear,jar,rar,war)文件的情况,我希望能够查看/在JAR中切换到作为已发布JAR源的同一分支,版本或标记.
如何最好地调整ant构建过程,以便svn checkout中的版本信息保留在创建的构建中?
我在思考:
我最终使用svnversion方法(接受的anwser),因为它扫描整个子树而不是svn info,它只是查看当前文件/目录.为此,我在ant文件中定义了SVN任务,使其更具可移植性.
<taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask">
<classpath>
<pathelement location="${dir.lib}/ant/svnant.jar"/>
<pathelement location="${dir.lib}/ant/svnClientAdapter.jar"/>
<pathelement location="${dir.lib}/ant/svnkit.jar"/>
<pathelement location="${dir.lib}/ant/svnjavahl.jar"/>
</classpath>
</taskdef>
Run Code Online (Sandbox Code Playgroud)
并非所有构建都会产生Web服务.由于应用程序服务器中的更新,部署之前的ear文件必须保持相同的名称.使文件可执行仍然是一个选项,但在那之前我只包括一个版本信息文件.
<target name="version">
<svn><wcVersion path="${dir.source}"/></svn>
<echo file="${dir.build}/VERSION">${revision.range}</echo>
</target>
Run Code Online (Sandbox Code Playgroud)
参考:
svnrevision:http://svnbook.red-bean.com/en/1.1/re57.html
svn info http://svnbook.red-bean.com/en/1.1/re13.html subclipse
svn task:http: //subclipse.tigris.org/svnant/svn.html
svn客户端:http://svnkit.com/
我想双缓冲包含按钮的自定义控件.我已经尝试了各种方法来双重缓冲控件; SetStyle,BufferedGraphicsContext和绘制到位图.这些都适用于控件的自定义绘图,但它们都不会处理将按钮绘制到后台缓冲区.我该如何实现这一目标?
用于Unix和Linux系统管理的Python针对系统管理员.除此之外的任何其他收藏.
我遇到了一个问题,我在UpdatePanel中有一个FileUpload控件.当我尝试保存更改并上传文件时,找不到任何文件.如果我删除UpdatePanel似乎一切正常.
任何想法为什么会这样?是否有解决方法?
