今天要介绍的模式是属於结构型模式的一种,此模式的名称我想大多数的人都听过或是知道它是做甚麽用的,而它所做的事情就像它的名子一样,那就是Proxy!
代理模式它在做的事情就是「控制和管理对所有保护的物件的访问行为」,在现实生活中,可以把信用卡当作是我们银行帐户中的代理,它能够代替现金使用,同时也能够在需要的时候提供一种获取现金的一种方式。
再举一个例子,学校的网路通常都会限制某些网站不能存取,像是社群网站、色情网站等等,好让学生不在电脑课上乱逛有的没的的网站,而这就是Proxy的作用。
首先它会先检查你要连线的主机,是否为它的限制站点列表中的其中之一,如果是的话可能就会被限制存取或是直接跳回首页,总之就是不会让你连线到被限制的站点;反之,你的要求就会被代理接受,就可以连线到你想要的网站。
interface Service {
public void operation();
}
class ConcreteService implements Service {
public void operation() {
// do something
}
}
class Proxy implements Service {
Service service = new ConcreteService();
public Proxy(Service service) {
this.service = service;
}
public boolean checkAccess() {
// verifyi access authority
}
public void operation() {
if(checkAcess()) {
service.operation();
}
}
}
代理模式最大的好处就是它的安全性,可以避免大量的程序重复,间接提高了应用程序的效能,不过因为需要多一步检查的作业,也就可能会造成服务响应的延迟,而且需要新增许多新的类别,因此程序码会变得比较复杂。
除此之外,也欢迎大家走走逛逛关於我们团队夥伴的文章
juck30808 - Python - 数位行销分析与 Youtube API 教学
SiQing47 - 前端?後端?你早晚都要全端的,何不从现在开始?
<<: 第 20 集:Bootstrap 客制化 Sass variable
>>: [DAY20] 用 Azure Machine Learning SDK 建立 Dataset
其实写前一篇的案例主要是提醒後进们在处理收到的需求时,真的需要谨慎地确认,否则就会像我一样面临几乎打...
这题真的需要花一点功夫,题目并不难懂,但是不能用直观的方式去写,可以上网搜寻关键字「find cyc...
为了要让程序码更简洁、更容易懂、及更容易维护, 我们今天要开始将之前的测试程序重构,(虽然好像才刚开...
接下来要做一个简单的剪刀石头布的小小实作,会用到上述所介绍到的,那就开始罗! 首先,我们要将专案一开...
巢状回圈 巢状回圈并非新的程序结构,只是回圈范围内又有回圈,巢状回圈可以有好几层,巢状回圈与单层回圈...