标签: delegation

在Python中模拟成员资格测试:正确地将__contains__委托给包含对象

我习惯于Python允许一些巧妙的技巧将功能委托给其他对象.一个例子是委托给包含的对象.

但当我想委托__contains __时,它接缝,我没有运气

class A(object):
    def __init__(self):
       self.mydict = {}
       self.__contains__ = self.mydict.__contains__

a = A()
1 in a
Run Code Online (Sandbox Code Playgroud)

我明白了:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: argument of type 'A' is not iterable
Run Code Online (Sandbox Code Playgroud)

我错了什么?当我打电话给.__包含__(1)时,一切顺利.我甚至试图在A中定义一个__iter __方法,使A看起来像一个可迭代的,但它没有帮助.我在这里错过了什么?

python containers iterable delegation emulation

6
推荐指数
1
解决办法
1714
查看次数

什么是代表团?我什么时候想用它?

在OOP中,提到了一个术语授权.这是如何在课堂上建模的?我在雅虎等搜索,但得到了代表的链接.

oop design-patterns delegation

6
推荐指数
1
解决办法
2355
查看次数

python中的方法委派

我正在编写一个用于编排AWS集群的小框架,并且有一些常见的层次结构模式一次又一次出现.一种这样的模式是将一组实例收集到一个更大的对象中,然后将一些方法直接委托给所有实例.因此,我不是一遍又一遍地复制和粘贴相同的样板代码,而是使用以下模式对其进行抽象:

def __getattr__(self, item):
    if not item in self._allowed_items:
        raise NonDelegatableItem

    def delegator():
        for instance in self.all_instances:
            getattr(instance, item)()

    return delegator
Run Code Online (Sandbox Code Playgroud)

是否有更好的方式或模式来完成授权?

python reflection delegation message-passing python-2.7

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

DelegatingVehicleTracker(第65页Goetz)如何返回"实时"视图?

在Java Concurrency in Practice的第65和66页上,Brian Goetz列出了以下代码:

@ThreadSafe
public class DelegatingVehicleTracker {
private final ConcurrentMap<String, Point> locations;
private final Map<String, Point> unmodifiableMap;

public DelegatingVehicleTracker(Map<String, Point> points) {
    locations = new ConcurrentHashMap<String, Point>(points);
    unmodifiableMap = Collections.unmodifiableMap(locations);
}

public Map<String, Point> getLocations() {
    return unmodifiableMap;
}

public Point getLocation(String id) {
    return locations.get(id);
}

public void setLocation(String id, int x, int y) {
    if (locations.replace(id, new Point(x, y)) == null)
        throw new IllegalArgumentException("invalid vehicle name: " + id);
}

// Alternate version of getLocations …
Run Code Online (Sandbox Code Playgroud)

java concurrency multithreading delegation

6
推荐指数
1
解决办法
147
查看次数

使用Builder Pattern时,为什么不应该重用builder-object来访问对象配置?

使用Builder Pattern时为什么不重用builder-object来访问对象配置?例如:

正常方式:

ObjectA(ObjectBuilder b) {
    this.a = b.getA();
}
public Object getA(){
    return this.a;
}
Run Code Online (Sandbox Code Playgroud)

但为什么我不能只使用它:

ObjectA(ObjectBuilder b) {
    this.builder = b;
}
public Object getA(){
    return this.builder.getA();
}
Run Code Online (Sandbox Code Playgroud)

谢谢 :)

java design-patterns delegation builder builder-pattern

6
推荐指数
1
解决办法
1235
查看次数

是否可以使用Moose/MooseX :: Declare for Perl自动强制传递给委托方法的参数(来自Array特征)?

我正在创建一个包含IP地址列表的类,作为Net :: IP对象.

我将Net :: IP对象包装为子类型(IPAddress),并定义了从字符串到IPAddress的强制.然后我使用类型ArrayRef [IPAddress]向名为ip_list的类添加了一个属性,并委托给Array trait 的push方法.

use MooseX::Declare;
use Moose::Util::TypeConstraints;

use Net::IP;

subtype 'IPAddress'
    => as 'Object'
    => where { $_->isa('Net::IP') };

coerce 'IPAddress'
    => from 'Str'
    => via { Net::IP->new( $_ ) };

class IPs {

    has 'ip_list' => ( traits  => ['Array'],
                       isa    => 'ArrayRef[IPAddress]',
                       is     => 'rw',
                       coerce => 1,
                       auto_deref => 1,
                       default => sub { [] },
                       handles => {
                           add_ip    => 'push'
                       }
                       );

}
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试像这样调用委托方法:

my $o …
Run Code Online (Sandbox Code Playgroud)

perl delegation moose traits

5
推荐指数
1
解决办法
504
查看次数

ASP.NET 中的模拟和委托(使用 SQL Server)

我编写了一个简单的 ASP.NET 应用程序,它作为一个简单的 MSSQL 数据库的前端。该应用程序可通过 Internet 访问。

涉及两个物理服务器:一个 WS2008R2 Active Directory 域控制器,它也运行 MSQL Server 2008 R2,另一个服务器,我的应用程序所在的网络服务器 (WS2008R2/IIS7.5)。

我的应用程序“FooPool”的应用程序池有自己的 AD 用户身份,它在“FooUser”下运行。FooUser 没有任何访问 SQL Server 数据库的权限,只有我自己的个人用户帐户“MyUser”具有该权限。

想法是尝试访问此 Web 应用程序首先使用 IIS 执行 Windows 身份验证,然后我的 Web 应用程序使用模拟访问 SQL Server 数据库。

但是我的应用程序不起作用。

我在没有接触 SQL Server 的情况下测试了应用程序,只是为了测试模拟,所以我做了 Response.Write( WindowsIdentity.GetCurrent(false).Name ); 它正确地显示了模拟 MyUser 而不是充当 FooUser 的应用程序。这适用于所有现代浏览器和整个互联网。

但是一旦它接触到 MSSQL Server,我就会收到错误消息“用户‘NT AUTHORITY\ANONYMOUS LOGON’登录失败。” 但这不应该发生,因为没有用户令牌用于匿名登录。

我已经完成了我的作业并阅读了有关 ASP.NET 中的委派和模拟的所有内容,并且我已经设置了委派:FooUser 帐户具有服务主体名称设置(我将 SPN 设置为任意字符串,这样做是否正确?) 并在 ADUC 中标记为委派。

最后,我的连接字符串启用了 SSPI,禁用了连接池,并且网络库设置为“dbmssocn”。

我还忘记了什么?

sql-server asp.net impersonation delegation

5
推荐指数
1
解决办法
6764
查看次数

没有浏览器的 SAML 2.0

假设我有一个目前是这样的系统:

  1. Monolithic Web App:包含自己的帐户并依赖客户端使用(本质上)HTTP BasicAuth 登录。也就是说,用户名和密码被传递到服务器。

  2. 胖客户端:登录上述应用程序,接收访问令牌,此后用于 REST API 调用。

基本上,我想将上述转换为这种系统:

  1. SAML 2.0 IdP:身份记录系统

  2. 相同的 Web 应用程序,减去身份验证责任

  3. 胖客户端:不变。<--硬性要求

因此,至关重要的是,我不能让胖客户端执行标准的 SAML 2.0 浏览器 SSO 重定向。有什么解决办法吗?本质上,我想要与 OAuth2 相同的功能password_grant,但在 SAML 2.0 世界中。

做了一些研究,我遇到了 SAML Enhanced Client 或 Proxy,但支持似乎参差不齐。令人沮丧的是,我在 WebApp 上拥有明文形式的该死的凭证;有没有一些简单的方法可以使这项工作?

请问HTTP工具绑定做的伎俩?

authentication identity delegation saml federation

5
推荐指数
1
解决办法
1436
查看次数

我可以用Java扩展Kotlin委托类吗?

我试图在Java中扩展一个Kotlin委托类并得到以下错误:

无法继承最终'衍生'

见下面的代码.

我要做的是装饰一个类的方法.

知道为什么Kotlin定义Derived为最终版?有没有办法让Derived自己不是最终的,所以我可以继承它?

Java的:

new Derived(new BaseImpl(10)) { // Getting the error on this line: `Cannot inherit from final 'Derived'`
};
Run Code Online (Sandbox Code Playgroud)

科特林:

interface Base {
    fun print()
}

class BaseImpl(val x: Int) : Base {
    override fun print() { print(x) }
}

class Derived(b: Base) : Base by b
Run Code Online (Sandbox Code Playgroud)

*此处的示例:https://kotlinlang.org/docs/reference/delegation.html

java delegation decorator kotlin

5
推荐指数
1
解决办法
567
查看次数

如何在 SwiftUI 中实现自定义委托

作为示例,我有一个 SwitUI ContentView。当你第一次做这个项目时就会出现这个。

import SwiftUI

struct ContentView: View {
   var manager = TestManager()
   var body: some View {
    ZStack{
        Color(.green)
            .edgesIgnoringSafeArea(.all)
        VStack {
            Text("Test Text")

            Button(action:{}) {
                Text("Get number 2")
                    .font(.title)
                    .foregroundColor(.white)
                .padding()
                .overlay(RoundedRectangle(cornerRadius: 30)
                .stroke(Color.white, lineWidth: 5))
                }
           }
       }
   }
}
Run Code Online (Sandbox Code Playgroud)

我有一个 TestManager 来处理 Api 调用。我为该类创建了一个具有两个功能的代表。

protocol TestManagerDelegate {
    func didCorrectlyComplete(_ testName: TestManager, model: TestModel)
    func didFailWithError(_ error: Error)
}

struct TestManager {

    var delegate: TestManagerDelegate?
    let urlString = "http://numbersapi.com/2/trivia?json"

    func Get(){
        if let url = URL(string: urlString){ …
Run Code Online (Sandbox Code Playgroud)

delegates delegation ios swiftui

5
推荐指数
1
解决办法
4870
查看次数