草庐IT

Decorator

全部标签

C++ 装饰器添加到 std::vector

我有一个记录的基类,想使用装饰器添加额外的字段和比较函数,并能够链接装饰器(记录可以有电子邮件,或出生日期,或两者都有,或没有).我也会有很多这样的装饰器;每个附加字段一个,及其比较功能。完成此操作后,我将使用基类指针将对象添加到vector中。代码如下:classBaseRecord{public:virtualboolCompare();//definedelsewhereprotected:std::stringm_strName;std::stringm_strAddress:};classBaseDecorator:publicBaseRecord{public:BaseDe

c++ - 装饰者模式在这里是合适的选择吗?

考虑下面的代码。通过A::doit(),B对象应该将total增加3。Decorated1对象应该将total增加4,并且Decorated2对象应该将总数增加5。作为这些派生类型的组合的A对象仍应执行其“特殊操作”,但会增加totalbythemax(notsum)oftheindividualincreasesintotal.但是装饰器模式正在获取总和而不是最大值。我必须在这里放弃装饰者模式吗?#includeinttotal=0;structA{public:virtualvoiddoIt()=0;};structDecorator:publicA{A*a;Decorator(A

c++ - C++ 中的 Python 函数装饰器等同于什么?

我正在将Python指标库移植到C++。Python库提供的一个API是函数装饰器,可以轻松记录函数的计时数据。通过修改函数定义为@timed('timing.foo')deffoo():...foo_result=foo()本质上变成了start=time.time()foo_result=foo()post_metric_to_endpoint('timing.foo',time.time()-start)在FunctionhookinginC++,我们发现thisanswer包装实例并将调用计时函数的负担放在调用者身上,这意味着我们不会在代码库中获取性能数据(一开始更新很烦人,以

c++ - 自定义转换运算符的 Clang 歧义

我一直在开发一种适配器类,当我在clang下遇到问题。当定义了左值引用和右值引用的转换运算符时,您会在尝试从您的类中移出时遇到歧义编译错误(当这样的代码应该没问题时,如operatorconstT&()const&仅允许用于左值AFAIK)。我用简单的例子重现了错误:#includeclassStringDecorator{public:StringDecorator():m_string("Stringdatahere"){}operatorconststd::string&()const&//lvalueonly{returnm_string;}operatorstd::strin

php - Zend 框架 : Plugin paths

我在ZF1.11上运行没有任何问题,并按照其性能指南中的说明删除了require_once语句。我已经按照他们所说的那样将自动加载器添加到我的索引文件中(在旁注中,我不明白为什么这不能进入boostrap),但现在找不到我的插件。例如,一个表单正在使用'DijitElement'装饰器,它返回错误:Zend_Loader_PluginLoader_Exception:Pluginbyname'DijitElement'wasnotfoundintheregistry;usedpaths:Zend_Form_Decorator_:Zend/Form/Decorator/inC:\wamp

php - 扩展 PHPUnit : adding a decorator

上下文我最近继承了一个程序良好的PHP应用程序的开发和维护(讽刺)。该应用程序基于商业软件(我不会命名),并且有一个自定义层(我们的)构建在它之上。不幸的是,此应用程序使用大量全局变量和单例变量(双关语)。我已经为我们覆盖的所有内容构建了测试用例。然而,很多事情都依赖于某些全局状态,这可能会导致竞争条件和各种奇怪的事情。随机化测试为了捕捉这些奇怪的东西中的大部分(我喜欢这样调用它们),我构建了一个PHPUnitTestDecorator,[如手册][1]。这个:classPHPUnit_Extensions_RandomizerextendsPHPUnit_Extensions_Tes

Java自定义注解/装饰器@Testing

我想做这样的事情:@测试privatevoidmethodThatGivesWarningIfUserTriesToUseThis(){其中@Testing是Java中的自定义注释/装饰器。我希望这个@Testing注释的行为几乎完全像@Deprecated注释一样-如果我或其他人不小心尝试在其他部分使用它代码,IDE会给出警告(并且方法名称在字体上也有一个删除线)。所以对于前我该怎么做?**注意:我不想使用@Deprecated,因为该方法没有被弃用,我只想将它用于测试目的**这个标记也应该在编译时检查,而不是运行时。 最佳答案

android - 如何为 Android View 实现装饰器模式

注意:实际问题在Whatmyquestionsare部分。提供其他部分是为了更好地概述问题。任务我想使用Decoratordesignpattern装饰AndroidView.对于我的问题,我将使用装饰ViewPager作为示例,但我相信解决方案会更通用。我为什么需要它我希望能够在我的不同解决方案中对标准View重用不同的扩充。例如。现在我有定时器切换ViewPager和ViewPager当用户到达终点时通知我。有了这个解决方案,我的目标是在我的下一个解决方案中添加自动切换通知ViewPager(即结合我当前的两个扩展)。装饰者模式正是为此而生的。我目前的做法是什么我已经在ViewPa

c++ - GoF 装饰器模式在 C++ 中使用静态多态性(模板)

装饰器模式是一种众所周知的使用模式,用于扩展对象的功能而不影响同一类的其他对象的功能。我如何使用这种模式来减少涉及的继承(使用模板)? 最佳答案 基本上,来自多态装饰器的抽象接口(interface)变成了一个隐式定义的概念,您可以嵌套类型。例如:structBasicCoffee{voidprint(){std::coutstructCreamDecorator{CreamDecorator(Tx):mNested(x){}voidprint(){mNested.print();std::coutstructSugarDecora

c++ - 装饰器设计模式,函数bug

这是家庭作业...我不是在寻求答案,我只是遇到了一个错误,我不确定该如何处理。谢谢!有问题的错误可能与作业本身无关,但无论如何这里是作业描述:我正在做一项作业(用C++编写),旨在通过带浇头的比萨饼的经典示例来教授装饰器设计模式的使用。(我的教授也可能直接从http://simplestcodings.com/2010/12/26/decorator-design-pattern-example-ni-c/中提取它)。我遇到了一个小问题,想知道是否有人可以帮助我。我有一个主菜单(披萨店)对象,它接受用户的输入并对披萨执行所需的操作。用户从一个基本的披萨开始,然后可以在上面添加配料,直到