将工厂设计模式与代理模式相结合,什么时候?
Combining Factory design pattern with Proxy pattern, and when?
关于 GoF 设计模式,是否可以将 Factory 和 Proxy 模式结合起来,如果可以,可以在哪里使用这种设计?
我认为任何模式都可以组合。这取决于需要。
一些用例代理模式:
1. Control access
Ex: Read Account Details but not modify.
2. To do Lazy instantiation of objects whose construction requires costly resources.
为了给出工厂和代理组合的示例,我将创建第一个用例的随机问题。
想象一家拥有不同类型员工的银行。
经理、会计、出纳等
每个客户都有一个帐户,可以执行 readAcountDetails()、addMoney()、removeMoney()、updateAccountDetails() 等操作。
根据他给定的角色,银行的每个员工都有权执行特定操作。
这个访问权限问题可以通过代理模式(方法之一)来解决。即通过为银行中的每个角色提供代理,如
Managerproxy: 只能做updateAccountDetails(),其他操作,拒绝访问。
CashierProxy: addMoney(),removeMoney(),for other operation,access denied.
AccountantProxy :readAcountDetails(),用于其他操作,拒绝访问。
现在我们可以拥有一个工厂,其中 return 代理 类 用于银行中不同类型的角色
关于 GoF 设计模式,是否可以将 Factory 和 Proxy 模式结合起来,如果可以,可以在哪里使用这种设计?
我认为任何模式都可以组合。这取决于需要。
一些用例代理模式:
1. Control access
Ex: Read Account Details but not modify.
2. To do Lazy instantiation of objects whose construction requires costly resources.
为了给出工厂和代理组合的示例,我将创建第一个用例的随机问题。
想象一家拥有不同类型员工的银行。
经理、会计、出纳等
每个客户都有一个帐户,可以执行 readAcountDetails()、addMoney()、removeMoney()、updateAccountDetails() 等操作。
根据他给定的角色,银行的每个员工都有权执行特定操作。
这个访问权限问题可以通过代理模式(方法之一)来解决。即通过为银行中的每个角色提供代理,如
Managerproxy: 只能做updateAccountDetails(),其他操作,拒绝访问。
CashierProxy: addMoney(),removeMoney(),for other operation,access denied.
AccountantProxy :readAcountDetails(),用于其他操作,拒绝访问。
现在我们可以拥有一个工厂,其中 return 代理 类 用于银行中不同类型的角色