Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 设计模式:在不同族的对象上应用行为_Java_Design Patterns - Fatal编程技术网

Java 设计模式:在不同族的对象上应用行为

Java 设计模式:在不同族的对象上应用行为,java,design-patterns,Java,Design Patterns,我有一组来自第三方库的类,我无法访问这些类的源代码。我需要使用设计模式在这些对象上添加一些常见行为。如何将Decorator或Visitor模式应用于这些对象 这些对象没有公共基类。它们要么是普通对象,要么具有不常见的接口。我无法向这些类添加公共接口,因为这些类不属于我的项目 如何在不检查单个方法中的“instance of”的情况下向这些类添加公共行为。要使用Decorator,您需要一些定义良好的接口。因此,第一个任务是找到一个接口。由于第三方类没有接口,适配器模式就应运而生。您可以定义自己

我有一组来自第三方库的类,我无法访问这些类的源代码。我需要使用设计模式在这些对象上添加一些常见行为。如何将Decorator或Visitor模式应用于这些对象

这些对象没有公共基类。它们要么是普通对象,要么具有不常见的接口。我无法向这些类添加公共接口,因为这些类不属于我的项目


如何在不检查单个方法中的“instance of”的情况下向这些类添加公共行为。

要使用Decorator,您需要一些定义良好的接口。因此,第一个任务是找到一个接口。由于第三方类没有接口,适配器模式就应运而生。您可以定义自己的接口,并使第三方类适应您要求它们遵守的接口

class YourTypeAdapter implements YourAdapterInterface{
    private Type instance; //need to adapt this as no interface present

    public void interfaceMethod(){
        instance.someTypeSpecificMethod();
        //perform extra steps here 
    }
}

通过这种方式,您可以将那些没有公共接口的类型调整为适合您的接口层次结构。您还可以添加要添加到此适配器的其他功能。或者,您可以继续使用装饰器来
YourTypeAdapter
,因为现在您有了一个接口
yourtadapterInterface

参考资料:
-要使用Decorator,您需要一些定义良好的界面。因此,第一个任务是找到一个接口。由于第三方类没有接口,适配器模式就应运而生。您可以定义自己的接口,并使第三方类适应您要求它们遵守的接口

class YourTypeAdapter implements YourAdapterInterface{
    private Type instance; //need to adapt this as no interface present

    public void interfaceMethod(){
        instance.someTypeSpecificMethod();
        //perform extra steps here 
    }
}

通过这种方式,您可以将那些没有公共接口的类型调整为适合您的接口层次结构。您还可以添加要添加到此适配器的其他功能。或者,您可以继续使用装饰器来
YourTypeAdapter
,因为现在您有了一个接口
yourtadapterInterface

参考资料:
-

您知道这些类在哪里工作吗?这些类正在进行一些计算,存储一些表单数据等。但是每个对象都有一些常见的表单字段数据,这是我感兴趣的应用其他行为。您知道这些类在哪里工作吗?这些类正在进行一些计算,存储一些表单数据等,但每个对象都有一些公共表单字段数据,这是我感兴趣的应用其他行为。