Avoiding parallel inheritance hierarchies

前端 未结 6 918
失恋的感觉
失恋的感觉 2020-12-01 04:46

I have two parallel inheritance chains:

Vehicle <- Car
        <- Truck <- etc.

VehicleXMLFormatter <- CarXMLFormatter
                    <-         


        
6条回答
  •  暗喜
    暗喜 (楼主)
    2020-12-01 05:13

    I want to add generics to Frederiks answer.

    public class Car extends Vehicle
    {
       public void Accept( VehicleFormatter v )
       {
           v.Visit (this);
       }
    }
    
    public class Truck extends Vehicle
    {
       public void Accept( VehicleFormatter v )
       {
           v.Visit (this);
       }
    }
    
    public interface VehicleFormatter
    {
       public void Visit( T v );
    }
    
    public class CarXmlFormatter implements VehicleFormatter
    {
        //TODO: implementation
    }
    
    public class TruckXmlFormatter implements VehicleFormatter
    {
        //TODO: implementation
    }
    

提交回复
热议问题