标签: composition

ColdFusion:从同一个组件调用cffunction

这个问题可能很天真,因为我是ColdFusion编程的新手.

我有一个任务,我f1在一个组件内编写了一个函数.我想f1从另一个函数调用,f2在同一个组件中定义.

f2 正在cfm文件中调用.

我的问题 - 这是正确的方法吗?我f1能从中调用f2吗?

我也合并f1f2,但我想保持f1作为一个单独的功能.

coldfusion functional-programming composition

4
推荐指数
1
解决办法
4696
查看次数

有没有办法重新分配$ this?

首先,我不想扩展课程.我理想的是喜欢这样做.

public function __construct() {
 /* Set Framework Variable */
 global $Five;
 $this =& $Five;
}
Run Code Online (Sandbox Code Playgroud)

我有一个系统,其中变量$ Five是一个包含其他库的容器类.我可以将它分配给一个局部变量Five ...即

public function __construct() {
 /* Set Framework Variable */
 global $Five;
 $this->Five = $Five;
}
Run Code Online (Sandbox Code Playgroud)

但是,我试图避免这种情况的原因是函数调用会变得有点长.

$this->Five->load->library('library_name');
Run Code Online (Sandbox Code Playgroud)

它有点难看.会好得多.

$this->load->library('library_name');
Run Code Online (Sandbox Code Playgroud)

什么是最好的解决方案?

php oop composition

4
推荐指数
1
解决办法
4102
查看次数

组合在 Hibernate 中是如何工作的?

我正在尝试在带有注释的休眠中使用组合。

我有:

@Entity
@Table(name = "Foo")
public class Foo {
    private Bar bar;

    public void setBar(Bar bar){...}
    public Bar getBar() {...)
}

public class Bar {
  private double x;

  public void setX(double x) {...}
  public double getX() {...}
}
Run Code Online (Sandbox Code Playgroud)

当我试图拯救 Foo 时,我得到了

无法确定表 Foo 中实体 org.bla.Bar 的类型,用于列:[org.hibernate.mapping.Column(bar)]

我尝试在 Bar 上添加 @Entity 注释,但这让我知道:

没有为实体 org.bla.Bar 指定标识符

java hibernate composition

4
推荐指数
2
解决办法
1万
查看次数

界面与构图

我想我理解界面和抽象之间的区别.Abstract设置默认行为,在纯抽象的情况下,行为需要由派生类设置.接口是您需要的,无需基类的开销.那么界面优于作曲的优势是什么?我能想到的唯一优势是在基类中使用受保护的字段.我错过了什么?

c++ abstract-class interface composition

4
推荐指数
3
解决办法
2337
查看次数

为什么使用依赖注入容器?

我已经完成了Karl Shiffet 的'InTheBox'WPF培训,并发现它是学习WPF的绝佳资源.它确实提出的一件事是使用依赖注入和Unity容器.以下是为我提出一些问题的代码部分:

public partial class App : Application {

    protected override void OnStartup(StartupEventArgs e) {

        IUnityContainer container = new UnityContainer();

        container.RegisterType<IDialogService, ModalDialogService>(
            new ContainerControlledLifetimeManager());

        container.RegisterType<IEventRepository, EventRepository>(
            new ContainerControlledLifetimeManager());

        MainWindow window = container.Resolve<MainWindow>();

        window.DataContext = container.Resolve<MainWindowViewModel>();

        window.Show();
    }
}
Run Code Online (Sandbox Code Playgroud)

依赖项正在注册到UnityContainer中,然后由UnityContainer注入到MainWindowViewModel中.我的问题是为什么要使用容器?为什么不使用下面的代码来实现与依赖注入相同的事情:

protected override void OnStartup(StartupEventArgs e)
{
    IDialogService dialogService = new ModalDialogService();
    IEventRepository eventRepository = new EventRepository();

    MainWindow window = new MainWindow();
    window.DataContext = 
        new MainWindowViewModel(eventRepository, dialogService);
    window.Show();
}
Run Code Online (Sandbox Code Playgroud)

我仍然从组合根注入构造函数中的依赖项,所以我认为在这种情况下使用UnityContainer没有任何好处.

我很欣赏它显然存在是有原因但有人可以解释在这种情况下它是否添加了什么?另外,还有另一种情况,使用像这样的容器真的是一个明智的选择吗?

wpf design-patterns dependency-injection composition

4
推荐指数
1
解决办法
1017
查看次数

mongo查询中的组合(SQL子查询等效)

例如,我有几个收藏品;

members
   id
   name
   //other fields we don't care about
emails
   memberid
   //other fields we don't care about
Run Code Online (Sandbox Code Playgroud)

我想删除给定成员的电子邮件.在SQL中,我可以使用嵌套查询,例如;

delete emails
where memberid in (select id from members where name = "evanmcdonnal")
Run Code Online (Sandbox Code Playgroud)

在蒙戈我正在尝试这样的事情;

db.emails.remove( {"memberid":db.members.find( {"name":"evanmcdonnal"}, {id:1, _id:0} ) )
Run Code Online (Sandbox Code Playgroud)

但它没有返回任何结果.所以我采用嵌套查询并自行运行它.我相信的问题是它会回归;

{
    "id":"myMadeUpId"
}
Run Code Online (Sandbox Code Playgroud)

哪个 - 假设内部查询首先执行 - 给我一个查询;

db.emails.remove( {"memberid":{ "id""myMadeUpId"} )
Run Code Online (Sandbox Code Playgroud)

我真的只想要id的值.我已经尝试使用字典和点符号来访问id的值而没有运气.有没有办法做到这一点类似于我上面尝试的查询?

composition mongodb

4
推荐指数
1
解决办法
1万
查看次数

如何使用 __getattr__ 将方法委托给属性?

我有以下课程:

class MyInt:
    def __init__(self, v):
        if type(v) != int:
            raise ValueError('value must be an int')
        self.v = v

    def __getattr__(self, attr):
        return getattr(self.v, attr)

i = MyInt(0)
print(i + 1)
Run Code Online (Sandbox Code Playgroud)

我收到错误: TypeError: unsupported operand type(s) for +: 'MyInt' and 'int'

i.__add__(1)应该叫吗?__getattr__当在MyInt类中找不到这样的方法时不应该调用吗?

python composition getattr

4
推荐指数
1
解决办法
1427
查看次数

为什么 kleisli 组合期望纯值?

这是 kleisli 组合的常见实现:

kleisli :: Monad m => (a -> m b) -> (b -> m c) -> a -> m c
kleisli = \f g x -> f x >>= g
Run Code Online (Sandbox Code Playgroud)

为什么它不期望 monadic 上下文中的值呢?我相信有一个很好的理由。我只是没能看到它。

kleisli' :: Monad m => (a -> m b) -> (b -> m c) -> m a -> m c
kleisli' = \f g x -> x >>= f >>= g
Run Code Online (Sandbox Code Playgroud)

该类型似乎更易于组合,并且return可以在调用站点上只有纯值的情况下使用。

monads haskell composition kleisli

4
推荐指数
1
解决办法
230
查看次数

如何在 Kotlin 中将依赖项注入到接口委托中?

我试图弄清楚如何将依赖项注入到 Kotlin 中的接口委托中。我有一堂课:

class MyThingie {}
Run Code Online (Sandbox Code Playgroud)

我想created_time向此类添加一个字段,该字段也可能添加到其他类中。因此,我可以创建一个接口和该接口的实例实现,然后将该委托添加到类定义中:

interface ThingieWithCreatedTS {
    val created_ts: Long
}

object ThingieCreatedAtNow : ThingieWithCreatedTS {
    override val created_ts: Long = System.currentTimeMillis()
}

class MyThingie : ThingieWithCreatedTS by ThingieCreatedAtNow {}
Run Code Online (Sandbox Code Playgroud)

这很棒。现在我可以调用created_ts任何实例MyThingie并获取它创建的时间戳。然而,现在这很难测试。

我真的不想尝试模拟System,并且我理解正确的模式是将某种 Clock 实例注入任何需要知道当前时间的对象中。这样,我可以在代码中提供一个 RealClock,并且在测试中我可以提供一个 FakeClock(我可以控制其输出)。

目前尚不清楚我如何在这种模式上做到这一点。如何将实现实例传递给委托?

delegates dependency-injection composition kotlin

4
推荐指数
1
解决办法
2686
查看次数

在组合与继承的争论中,组合意味着什么?

我正在学习桥梁设计模式。去引用:

\n
\n

桥接模式试图通过从继承切换到对象来解决这个问题composition。\xe2\x80\xa6

\n
\n

然后,显示下图:

\n

桥梁图案

\n

当人们谈论组合作为继承的替代方案时,他们是否指的是聚合关系组合关系?如果不是,它们到底是什么意思?

\n

我想知道这一点,因为图片 和 之间是聚合关系,而不是合成关系。ColorShape

\n

inheritance uml design-patterns composition

4
推荐指数
1
解决办法
515
查看次数