Cet article présente principalement la loi de Déméter. La loi de Déméter est une règle qui doit être suivie lors de la création de méthodes et d'attributs dans une classe. Ceux qui sont intéressés peuvent en apprendre davantage
Définition : 1 <.> Un objet doit garder une connaissance minimale des autres objets.
Origine du problème : Plus la relation entre les classes est étroite, plus le degré de couplage est grand. Lorsqu'une classe change, plus l'impact sur l'autre classe est grand.
Solution : Essayez de réduire le couplage entre les classes.
//总公司员工 class Employee{ private String id; public void setId(String id){ this.id = id; } public String getId(){ return id; } } //分公司员工 class SubEmployee{ private String id; public void setId(String id){ this.id = id; } public String getId(){ return id; } } class SubCompanyManager{ public List<SubEmployee> getAllEmployee(){ List<SubEmployee> list = new ArrayList<SubEmployee>(); for(int i=0; i<100; i++){ SubEmployee emp = new SubEmployee(); //为分公司人员按顺序分配一个ID emp.setId("分公司"+i); list.add(emp); } return list; } } class CompanyManager{ public List<Employee> getAllEmployee(){ List<Employee> list = new ArrayList<Employee>(); for(int i=0; i<30; i++){ Employee emp = new Employee(); //为总公司人员按顺序分配一个ID emp.setId("总公司"+i); list.add(emp); } return list; } public void printAllEmployee(SubCompanyManager sub){ List<SubEmployee> list1 = sub.getAllEmployee(); for(SubEmployee e:list1){ System.out.println(e.getId()); } List<Employee> list2 = this.getAllEmployee(); for(Employee e:list2){ System.out.println(e.getId()); } } } public class Client{ public static void main(String[] args){ CompanyManager e = new CompanyManager(); e.printAllEmployee(new SubCompanyManager()); } }Le principal problème de cette conception réside désormais dans le CompanyManager. Selon la loi de Dimit, la communication ne se produit qu'avec des amis directs, contrairement à la classe SubEmployee. non Ce ne sont pas des amis directs de la classe CompanyManager (les couplages qui apparaissent comme des variables locales ne sont pas des amis directs). En toute logique, le siège social n'a besoin d'être couplé qu'avec ses succursales et n'a aucun lien avec les employés des succursales. augmente évidemment les couplages inutiles. Selon la loi de Déméter, de tels couplages avec des relations amicales indirectes en classe doivent être évités. Le code modifié est le suivant :
class SubCompanyManager{ public List<SubEmployee> getAllEmployee(){ List<SubEmployee> list = new ArrayList<SubEmployee>(); for(int i=0; i<100; i++){ SubEmployee emp = new SubEmployee(); //为分公司人员按顺序分配一个ID emp.setId("分公司"+i); list.add(emp); } return list; } public void printEmployee(){ List<SubEmployee> list = this.getAllEmployee(); for(SubEmployee e:list){ System.out.println(e.getId()); } } } class CompanyManager{ public List<Employee> getAllEmployee(){ List<Employee> list = new ArrayList<Employee>(); for(int i=0; i<30; i++){ Employee emp = new Employee(); //为总公司人员按顺序分配一个ID emp.setId("总公司"+i); list.add(emp); } return list; } public void printAllEmployee(SubCompanyManager sub){ sub.printEmployee(); List<Employee> list2 = this.getAllEmployee(); for(Employee e:list2){ System.out.println(e.getId()); } } }Après la modification, une méthode d'impression des identifiants du personnel est ajoutée à l'agence, et le siège social l'appelle directement pour imprimer , évitant ainsi d'avoir à interagir avec la succursale. Les salariés de l'entreprise sont couplés.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!