如何从同一个类生成两个Java对象的行为有所不同

时间:2018-04-30 00:57:00

标签: java class oop

我正在做一个有一个名为service的类的模拟器,它有一行等待的客户端作为属性(这是一个Arraylist)。在模拟中,只有两个服务正在运行,但它们将拥有自己的客户类型。在某一点上,服务A可以帮助服务B,服务于B的客户。这就是问题所在:如何让一个服务访问B的客户行而不允许B访问A?

2 个答案:

答案 0 :(得分:0)

您可以在班级中定义serviceType州。因此,无论何时创建服务实例,都可以根据服务类型分配serviceType。因此,当一个服务试图访问另一个服务的客户时,您可以检查serviceType并决定是否允许他。

答案 1 :(得分:0)

Stinepike提到的用户是一种可能性。根据您的实现,如果您希望“访问控制列表”控制哪个实例可以访问当前类的属性,您可以维护一个列表:

public class Service{
    private ArrayList<Service> accessControl;
    private Customer customer;       

    public Service(){
        accessControl = new ArrayList<Service>();
    }

    public void grantAccessTo(Service s){
        accessControl.add(s);
    }

    public boolean hasAccess(Service s){
        accessControl.contains(s);
    }

    private Customer getCustomerByACL(Service s){
        if(hasAccess(s))
            return customer;
        else 
            //throw an exception or return null..
    }
}

使用清单:

Service a = new Service();
Service b = new Service();  //b cannot access a
b.grantAccessTo(a);         //a can access b
相关问题