23 изображения + 10 блоков кода Следуйте рассказу, чтобы понять 6 принципов шаблонов проектирования

Шаблоны проектирования
23 изображения + 10 блоков кода Следуйте рассказу, чтобы понять 6 принципов шаблонов проектирования

Как важно хорошо изучить боевые искусства. Подобно тем, кто практиковал неправильное мышление, например, дядя Оуян Фэн, у которого было неправильное мышление, попал в беду и умер на вершине горы Хуашань. Есть также некоторые боевые искусства, которые сначала должны прийти из дворца, может быть, на следующей странице будет сказано, что предыдущая страница не нужна. Таким образом, 6 основных принципов, каждый должен полностью понять мысленный метод, чтобы хорошо практиковать боевые искусства.

Начнем с обзора 6 принципов шаблонов проектирования.

  • 1. Принцип «открыто-закрыто» | Открыт для расширения, закрыт для модификации.

  • 2. Принцип замещения Лисков | Подклассы могут заменить внешний вид базовых классов.

  • 3. Принцип инверсии зависимостей Программирование интерфейсов зависит от абстракции, а не от конкретики.

  • 4. Принцип изоляции интерфейса Использование нескольких изолированных интерфейсов лучше, чем использование одного интерфейса. (уменьшить связь между классами)

  • 5. Закон Деметры (принцип наименьшего знания) | Сущность должна как можно меньше взаимодействовать с другими сущностями.

  • 6. Единственная ответственность | У класса должна быть только одна причина для его изменения, одна ответственность.

Конечно, это все еще слишком абстрактно, чтобы смотреть на это таким образом.Далее будет подробно объяснено в виде 4 дней (4 статьи) небольших комиксов + код~

первый день

Последняя ссылка:Начало шаблонов проектирования

public class Animal {
   public void eat() {
       System.out.println("eat something");
   }
   public void sleep() {
       System.out.println("sleeping ~~");
   }
}
public void eat (String kind) {
    if (kind.equals("rabbit")) {
        System.out.println("eat some carmine");
    }
    if (kind.equals("tigger")) {
        System.out.println("eat some meat");
    }
}
public class Rabbit extends Animal {
   public void eat() {
       System.out.println("eat some carmine");  
   }
}
public class Cooker {
   public void cook(Potato potato) {
       System.out.println("开始做菜了");
       System.out.println(potato.getFood());
   }
}

class Potato {
   public String getFood() {
       return "酸辣土豆丝";
   }
}
public interface FoodMaterial {
   String getFood();
}

class Potato implements FoodMaterial{
   @Override
   public String getFood() {
       return "酸辣土豆丝";
   }
}

class Chicken implements FoodMaterial{
   @Override
   public String getFood() {
       return "可乐鸡翅";
   }
}

public class Cooker {

   public void cook(FoodMaterial foodMaterial) {
       System.out.println("开始做菜了");
       System.out.println(foodMaterial.getFood());
   }
   public static void main (String []args) {
       Cooker cooker = new Cooker();
       cooker.cook(new Potato());
   }
}

На следующий день

public interface EmployService {

   void sign (); //打卡
   void knockCode();//敲代码
   void recruit(); //招聘
   void relationShip(); //员工关系
   void performanceEvaluation(); //绩效管理
   void procedureDesign(); //程序设计
   void makeBugs(); //哈哈哈

}

public class HrServiceImpl implements EmployService{
   @Override
   public void sign() {
       System.out.println("打卡");     
   }
   @Override
   public void knockCode() {

   }
   @Override
   public void recruit() {
     System.out.println("招聘");       
   }
   @Override
   public void relationShip() {
     System.out.println("员工关系");       
   }
   @Override
   public void performanceEvaluation() {
     System.out.println("绩效考核");
   }
   @Override
   public void procedureDesign() {

   }
   @Override
   public void makeBugs() {

   }
}

public class ProgrammerServiceImpl implements EmployService {

   @Override
   public void sign() {
       System.out.println("打卡");
   }
   @Override
   public void knockCode() {
       System.out.println("敲代码");
   }
   @Override
   public void recruit() {

   }
   @Override
   public void relationShip() {

   }
   @Override
   public void performanceEvaluation() {

   }
   @Override
   public void procedureDesign() {
       System.out.println("程序设计");
   }
   @Override
   public void makeBugs() {
       System.out.println("造点bug");
   }
}

public class ProgrammerClient {

   public void sign (EmployService employService) {
       employService.sign();
   }

   public void knockCode(EmployService employService) {
       employService.knockCode();
   }

   public void procedureDesign(EmployService employService) {
       employService.procedureDesign();
   }

   public void makeBugs(EmployService employService) {
       employService.makeBugs();
   }
}


public class HrClient {

   public void sign (EmployService employService) {
       employService.sign();
   }

   public void performanceEvaluation(EmployService employService) {
       employService.performanceEvaluation();
   }

   public void recruit(EmployService employService) {
       employService.recruit();
   }

   public void relationShip(EmployService employService) {
       employService.relationShip();
   }
}
public interface EmployService {
   void sign(); //打卡
}

public interface HrService {
   void recruit(); //招聘
   void relationShip(); //员工关系
   void performanceEvaluation(); //绩效管理
}

public class HrServiceImpl implements HrService,EmployService{
   @Override
   public void sign() {
       System.out.println("打卡");
   }
   @Override
   public void recruit() {
       System.out.println("招聘");
   }
   @Override
   public void relationShip() {
       System.out.println("员工关系");
   }
   @Override
   public void performanceEvaluation() {
       System.out.println("绩效管理");
   }
}


public interface ProgrammerService {
   void knockCode();//敲代码
   void procedureDesign(); //程序设计
   void makeBugs(); //哈哈哈
}

public class ProgrammerServiceImpl implements ProgrammerService,EmployService {
   @Override
   public void sign() {
       System.out.println("签到");
   }
   @Override
   public void knockCode() {
       System.out.println("敲代码");
   }
   @Override
   public void procedureDesign() {
       System.out.println("程序设计");
   }
   @Override
   public void makeBugs() {
       System.out.println("造点bug");
   }
}

день третий

public interface CarService{
   String getName ();
   void drive ();
   String color();
}

public class Sedan implements CarService {
   private String name;
   private String color;
   private int speed;

   public Sedan(String name, String color,int speed{
       this.name = name;
       this.color = color;
       this.speed = speed;
   }

   @Override
   public String getName() {
       return this.name;
   }

   @Override
   public void drive() {
       System.out.println("普通的小车普通的开" + this.speed);
   }

   @Override
   public String color() {
       return this.color;
   }
}
public class FastSedan extends Sedan {
   public FastSedan(String name, String color, int speed) {
       super(name, color, speed);
   }

   public void drive() {
       System.out.println("飙车的飙,飙起来" + this.getSpeed() * 2);
   }
}
public class Boss {
   //发布任务给cto
   public void pushJob(CTO cto) {
       List<Programmer> list = new ArrayList<Programmer>();
       for (int i = 0;i < 5;i++) {
           list.add(new Programmer());
       }
       cto.assignmentTask(list);
   }
}

public class CTO {
   //分配任务
   public void assignmentTask(List<Programmer> programmers) {
       for (Programmer programmer:programmers) {
           programmer.backPot();
       }
   }
}

public class Programmer {
   //背锅
   public void backPot () {
       System.out.println("程序员背起了小锅");
   }
}

public class Client {
   public static void main (String []args) {
       Boss boss = new Boss();
       boss.pushJob(new CTO());
   }
}

Последний день

Давайте объединим

Публичная учетная запись «Java Little Coffee Show» фокусируется на области Java, а также на обучении и прогрессе с друзьями ~

В этой статье используетсяmdniceнабор текста