Há um problema ao escrever código: uma classe de interface é definida no pacote e outro pacote precisa implementá -lo. Aqui, os princípios do isolamento da interface e inversão de dependência são adotados para inverter as dependências dos dois pacotes. No entanto, encontramos um problema aqui. A classe de implementação adota o modelo de fábrica para instanciar, portanto, a classe de implementação não deseja ser exposta ao pacote, mas a classe de implementação também precisa implementar a interface pública. Então, aqui está uma pergunta: se a classe é do tipo padrão e a função do membro é do tipo público, quais são as restrições de acesso?
Implementar verificação
1. Primeiro defina uma classe de interface em um pacote:
pacote mytest interface pública classaccesstest {void getData (); Charseqence gettring ();}2. Defina classes e fábricas de implementação em pacotes de implementação
pacote classaccesstest importar mytest.classaccesstest class ClassAccessTestImp implementos classaccesstest {int ma = 0; ClassacccessTestImp (int a) {ma = a; } public void getData () {System.out.printlin ("Os dados são" + ma); } public Charsequence getString () {return ("Os dados são" + ma); } pacote classaccesstest importar mytest.classaccesstestt public class factory {public static classaccesstest getAccessTest () {return colarclescesstestimp (10); }}3. Em seguida, use a interface no pacote original:
pacote mytest importar classeCessTest.Factory // Importar classaccessTest.classAccessTestImp public class TestMain {public static void main (string arg []) {factory.getAccessTest (). getString (); <span style = "space branco: pré"> </span> // <estilo ""); fontily; = </span> new <span style = "font-family: Arial, Helvetica, Sans-Serif;"> classaccessTestimp (10); </span>}} 4. Resultados:
Na classe Testmain, a parte não contratada pode ser executada normalmente, e a peça comentada relatará um erro. A conclusão indefinida do ClassAccessTestimp é derivada do exposto de que as permissões de acesso das classes em Java podem ser menores que as permissões de acesso dos membros. Sob os requisitos de inversão e encapsulamento de pacotes, os requisitos podem ser atendidos.