Is This Use of the “instanceof” Operator Considered Bad Design?

后端 未结 6 521
南方客
南方客 2020-11-30 04:11

In one of my projects, I have two \"data transfer objects\" RecordType1 and RecordType2 that inherit from an abstract class of RecordType.

I want both RecordType obj

6条回答
  •  有刺的猬
    2020-11-30 04:44

    My suggestion:

    public RecordType process(RecordType record){
        return record.process();
    }
    
    public class RecordType
    {
        public RecordType process()
        {
            return null;
        }
    }
    
    public class RecordType1 extends RecordType
    {
        @Override
        public RecordType process()
        {
            ...
        }
    }
    
    public class RecordType2 extends RecordType
    {
        @Override
        public RecordType process()
        {
            ...
        }
    }
    

    If the code you need to execute is coupled to something the model shouldn't know (like UI) then you will need to use a kind of double dispatch or visitor pattern.

    http://en.wikipedia.org/wiki/Double_dispatch

提交回复
热议问题