首页 > 编程知识 正文

协议软件接口位于应用程序,单一职责和接口隔离

时间:2023-05-04 12:04:21 阅读:162700 作者:4223

客户端不得不依赖不使用的方法;

一个类对另一个类的依赖必须建立在最小的接口上。

【例】安全门外壳

我们需要建立黑马品牌的安全门。 这个安全门具有防火、防水、防盗的功能。

可以将防火、防水、防盗功能提取到一个界面中,形成一个规范。

类图如下所示。

safety door.javapackagecom.it heima.principles.demo4. before;/* * @ versionv 1.0 * @ class name : safety door * @ description 3360安全网关接口* @ author 3360 dym */publicinterfacesace //防水void waterProof (; } heimasafetydoor.javapackagecom.it heima.principles.demo4. before;/* * @ versionv 1.0 * @ class name : heimasafetydoor * @ description :黑马品牌安全门* @ author : dym */publicclasssheimime } public void fireProof () ({ System.out.println ) )防火; } public void waterProof () { System.out.println "防水" ); } client.javapackagecom.it heima.principles.demo4. before;/* * @ versionv 1.0 * @ class name : client * @ description : todo (@ author : dym */public class client { publicstaticticve door.antiTheft (; door.fireProof (; door.waterProof (; }

上面的设计发现了问题。 黑马品牌安全门具有防盗、防水、防火的功能。

现在还需要再做一个传承智慧的品牌安全门,这个安全门只有防盗、防水功能吗?

实现SafetyDoor接口显然会违反接口隔离原则,该如何修改呢?

请看以下类图。

anti theft.javapackagecom.it heima.principles.demo4. after;/* * @ versionv 1.0 * @ class name : anti theft * @ description :防盗界面* @ author : dym */publicinterfaceantithefed/* * @ versionv 1.0 * @ class name : fire proof * @ description :防火接口* @ author : dym */publicinterfacefireproof {/* * @ versionv 1.0 * @ class name : waterproof * @ description :防水接口* @ author : dym */publicinterfacewaterproof { publicinterfacewaterprooof } } heimasafetydoor.javapackagecom.it heima.principles.demo4. after;/* * @ versionv 1.0 * @ class name : heimasafetydoor * @ description 3360 todo (@ author : dym )/publicclasheimasafetydoon waterproof { publicvoidantitheft (} { system.out.println () ) ) system.out.println } public void fire proof () () } public void waterproof () { System.out.println "防水" ); } itcastsafetydoor.javapackagecom.it heima.principles.demo4. after;/* * @ versionv 1.0 * @ class name : itcastsafetydoor * @ description 3360传智安全门* @ author : dym */publicclassitcaststsafetyafety } public void fireproof () ({ System.out.println ) )防火; } client.javapackagecom.it heima.principles.demo4. after; import com.it heima.principles.demo4. before.heimasafetydoor;/* * @ versionv 1.0 * @ class name : client * @ description : todo (@ author : dym */public class client { publicstaticticve //调用功能door.antiTheft (; door.fireProof (; door.waterProof (; system.out.println('========' ); //传智安全对象itcastsafetydoordoor1=newitcastsafetydoor (); //调用功能door1.antiTheft (; door1.fireproof (; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。