首页 > 解决方案 > 添加接口使密封性变弱

问题描述

考虑以下示例:

   class Ccc implements Ttt {
        @Override
        public void pay() {} // must be public
    }

    class Ddd implements Ttt {
        @Override
        public void pay() {} // must be public
    }

    public interface Ttt {
        void pay();
    }
// in same package, but other file:
   class Eee {
    private final EnumMap<SomeEnum, Ttt> strategies = new EnumMap<>(SomeEnum.class);

    Allocate() {
        strategies.put(SomeEnum.CERT, new Ccc());
        strategies.put(SomeEnum.GROUP, new Ddd());
    }
// some other methods using `strategies` Map and method `pay`
}

如果类Ccc并且Ddd没有实现Ttt该方法pay可以被保护。在我的情况下,方法pay在类之外使用,Ccc并且Ddd. 但是我在类中使用多态性,Eee因为两个类都实现了Ttt类。

pay我想知道以某种方式保护该方法是否会更好?我知道我必须优先考虑抽象与实现——但我认为这是它的一个缺点。

标签: javaspring-boot

解决方案


推荐阅读