1 回答
TA贡献1784条经验 获得超9个赞
图片1:
License, PersonalLicense,BusinessLicense可以,Billing必须是这样的:
public class Billing {
private Lisense license;
public Billing(License license){
this.license = license;
}
public void pay(){
// some code
this.license.calcFee();
// some code
}
public void setLicense(License license){
this.license = license;
}
}
它看起来像Strategy pattern,它允许您定义一系列算法 ( License
),将它们中的每一个放入一个单独的类 ( PersonalLicense
, BusinessLicense
),并使它们的对象可以互换。主要特点是该类Billing
只知道它有一些许可证对象,calcFee
而不知道具体的实现。稍后,为了支持新的许可证类型,您将创建新的实现License
并且不会修改Billing
.
图二:
User1, User2, User3, 必须是类似的东西,具有相应的 U*Ops:
public class User1 {
private U1Ops u1Ops;
public User1(U1Ops u1Ops){
this.u1Ops = u1Ops;
}
}
// usage of classes
OPS ops = new OPS();
User1 user1 = new User1(ops);
User2 user2 = new User2(ops);
看起来像是来自SOLID的接口隔离原则示例,它指出不应强制客户端(User1
、、)依赖于它不使用(只需要)的User2
方法。User3
User1
op1()
图三:
与前面的示例一样,关联必须通过实例字段来实现User
。这些图演示了依赖倒置原则(上部 - 不好的做法,下划线 - 好的做法)。根据它,User
必须只知道一些抽象Permissions
接口而不是具体实现,Permissions
类只知道Permissions
它实现的接口。使用这个原则,Entities
模块创建自己的抽象级别(API) -Permissions
接口并Authorizer
使用它。与之相关的术语是依赖注入,通常用于 java 框架(例如Spring Framework )以实现模块之间的低耦合
添加回答
举报