东平建设局网站,wordpress简题,做特卖的网站,秦皇岛软件开发培训tip: 需要《设计模式之禅》的书籍#xff0c;可以联系我
作为程序员一定学习编程之道#xff0c;一定要对代码的编写有追求#xff0c;不能实现就完事了。我们应该让自己写的代码更加优雅#xff0c;即使这会费时费力。
相关规则#xff1a;
1.6大设计规则-迪米特法则 …tip: 需要《设计模式之禅》的书籍可以联系我
作为程序员一定学习编程之道一定要对代码的编写有追求不能实现就完事了。我们应该让自己写的代码更加优雅即使这会费时费力。
相关规则
1.6大设计规则-迪米特法则 2.6大设计原则-里氏替换原则 3.6大设计规则-开闭原则 4.6大设计规则-单一职责原则 5.6大设计规则-依赖倒置原则 文章目录 接口隔离原则 接口隔离原则
接口隔离原则在《设计模式之禅》的第四章中介绍但是文章开头并没有直接介绍这个原则的定义可能因为不好描述吧。而是总结了这个原则的一些特性
1、保证接口的纯洁性接口要尽量小 2、接口的设计要高内聚但是功能职责要单一
这两点怎么理解呢我们举个例子 我早上起床第一件事是先运动第二件事是洗漱第三件是吃饭第四件事是开车上班。那么这个四件事如果放在一个类里面呢那么就不满于单一职责的原则了而且接口力度不够细。 那么怎么利用接口隔离原则优化呢如下例子。 我们通过行程类 Schedule 将事件全部串起来每个事件都是从特定的接口实现来的每件事他都发生在它应该发生的地方这样写才符合接口隔离且单一职责的原则。 Schedule schedule new Schedule(); schedule.sport(); schedule.wash(); schedule.eat(); schedule.drive();
package com.pany.camp.design.principle.quarantine;/**** description: 客厅* copyright: Copyright (c) 2022* company: Aiocloud* author: pany* version: 1.0.0* createTime: 2023-05-31 21:33*/
public interface LivingRoom {/*** 在客厅运动** since 1.0.0* param* return: void* author: pany* version: 1.0.0* createTime: 2023-05-31 21:33*/void sport();
}
package com.pany.camp.design.principle.quarantine;/**** description: 厕所* copyright: Copyright (c) 2022* company: Aiocloud* author: pany* version: 1.0.0* createTime: 2023-05-31 21:34*/
public interface Toilet {/*** 在厕所洗漱** since 1.0.0* param* return: void* author: pany* version: 1.0.0* createTime: 2023-05-31 21:34*/void wash();
}
package com.pany.camp.design.principle.quarantine;/**** description: 餐桌* copyright: Copyright (c) 2022* company: Aiocloud* author: pany* version: 1.0.0* createTime: 2023-05-31 21:35*/
public interface DiningTable {/*** 餐桌上吃饭** since 1.0.0* param* return: void* author: pany* version: 1.0.0* createTime: 2023-05-31 21:35*/void eat();
}
package com.pany.camp.design.principle.quarantine;/**** description: 车* copyright: Copyright (c) 2022* company: Aiocloud* author: pany* version: 1.0.0* createTime: 2023-05-31 21:35*/
public interface Car {/*** 开车上班** since 1.0.0* param* return: void* author: pany* version: 1.0.0* createTime: 2023-05-31 21:36*/void drive();
}
package com.pany.camp.design.principle.quarantine;/**** description: 行程安排* copyright: Copyright (c) 2022* company: Aiocloud* author: pany* version: 1.0.0* createTime: 2023-05-31 21:37*/
public class Schedule implements LivingRoom, Toilet, DiningTable, Car {Overridepublic void sport() {System.out.printf(sport);}Overridepublic void wash() {System.out.printf(wash);}Overridepublic void eat() {System.out.printf(eat);}Overridepublic void drive() {System.out.println(drive);}
}
package com.pany.camp.design.principle.quarantine;public class User {public static void main(String[] args) {Schedule schedule new Schedule();schedule.sport();schedule.wash();schedule.eat();schedule.drive();}
}