当前位置: 首页 > news >正文

国外一些建筑公司网站网络推广员的工作内容和步骤

国外一些建筑公司网站,网络推广员的工作内容和步骤,鱼台网站建设,网站banner图切换效果1,代理模式 代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。 代理模式的目的: (1)通过引入代理对象的方式来间接访问目标对象,防…

1,代理模式

代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。

代理模式的目的:

(1)通过引入代理对象的方式来间接访问目标对象,防止直接访问目标对象给系统带来的不必要复杂性;

(2)通过代理对象对访问进行控制;

代理模式一般会有三个角色:

抽象角色:指代理角色和真实角色对外提供的公共方法,一般为一个接口。

真实角色:需要实现抽象角色接口,定义了真实角色所要实现的业务逻辑,以便供代理角色调用。也就是真正的业务逻辑在此。

代理角色:需要实现抽象角色接口,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。将统一的流程控制都放到代理角色中处理。

2,静态代理

静态代理在使用时,需要定义接口或者父类,被代理对象与代理对象一起实现相同的接口或者是继承相同父类。一般来说,被代理对象和代理对象是一对一的关系,当然一个代理对象对应多个被代理对象也是可以的。

比如我要卖房子,但是我不会自己去卖,我会先找到中介,让中介去卖。

这里的抽象角色就是卖房子。

真实角色就是我卖房子。

代理角色就是中介卖房子。

新建一个抽象接口:

public interface SailRoom {//卖房子void sailRoom();
}

创建真实的卖房子的对象:

public class Me implements SailRoom{@Overridepublic void sailRoom() {System.out.println("sail my room");}
}

创建一个中介代理类:

public class RoomProxy implements SailRoom {private Me me;public RoomProxy(Me me) {this.me = me;}private void before(){System.out.println("before sail room");}private void after(){System.out.println("after sail room");}@Overridepublic void sailRoom() {before();me.sailRoom();after();}
}

在应用时这么使用:

RoomProxy proxy =new RoomProxy(new Me());
proxy.sailRoom();

那我如果要想再卖一个二手苹果手机,那我找中介就不行了,那我只能再去创建一个新的卖二手手机代理,去去卖二手手机。

创建一个新的卖手机的接口:

public interface SailPhone {/** 卖手机* */void sailPhone();
}

实现这个接口: 

public class Me implements SailRoom,SailPhone{@Overridepublic void sailRoom() {System.out.println("sail my room");}@Overridepublic void sailPhone() {System.out.println("sail my phone");}
}

 创建一个卖手机的代理类:

public class PhoneProxy implements SailPhone{private Me me;private void before(){System.out.println("before sail phone");}private void after(){System.out.println("after sail phone");}@Overridepublic void sailPhone() {before();me.sailPhone();after();}
}

使用时:

public static void main(String[] args) {Me me =new Me();RoomProxy proxy =new RoomProxy(me);PhoneProxy phoneProxy =new PhoneProxy(me);proxy.sailRoom();phoneProxy.sailPhone();
}

输出: 

before sail room
sail my room
after sail room
before sail phone
sail my phone
after sail phone

从上面可以很明显的看出静态代理模式的缺点:

1,如果有多个类需要代理,那么就需要创建多个代理类分别代理目标对象,工作量较大,不利于维护。

2,当接口的方法增加或修改的时候,很多类都需要修改。因为,目标类和代理类都实现了相同的接口

3,动态代理

上面那个案例,用动态代理怎么实现呢?

下面我们用jdk的动态代理来实现:

先创建我们的动态代理类:

public class SailProxy implements InvocationHandler {private Object object;public SailProxy(Object object) {this.object = object;}@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println("do before");Object invoke = method.invoke(object, args);System.out.println("do after");return invoke;}
}

在使用时:

public class Test {public static void main(String[] args) {Me me =new Me();SailProxy sailProxy =new SailProxy(me);Object o =Proxy.newProxyInstance(me.getClass().getClassLoader(), new Class[]{SailRoom.class,SailPhone.class}, sailProxy);SailRoom sailRoom = (SailRoom) o;sailRoom.sailRoom();SailPhone sailPhone = (SailPhone) o;sailPhone.sailPhone();}
}

输出:

do before
sail my room
do after
do before
sail my phone
do after

这样我们就实现了一劳永逸,只创建一个代理类,就可以代理无数个接口。没错,是接口,JDK的实现的动态代理,它代理的只是接口。

下面我们就来详细讲解一下上个案例。

首先,在SailProxy中,我们实现了InvocationHandler这个接口,实现了接口的invoke方法。

@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println("do before");Object invoke = method.invoke(object, args);System.out.println("do after");return invoke;
}

其中 参数一Object proxy 与:

Object o =Proxy.newProxyInstance(me.getClass().getClassLoader(), new Class[]{SailRoom.class,SailPhone.class}, sailProxy);

的返回值Object o是一个对象,都是代表的传入的 new Class[]{SailRoom.class,SailPhone.class}

的接口对象。可以强转为SailRoom也可以强转为SailPhone。

接下来看第二个参数Method method,它代表的是你调用的接口的方法,可以是sailRoom(),也可以是sailPhone()。

第三个参数Object[] args就是接口方法的参数。

当你调用sailRoom.sailRoom()时,就会回调到invoke方法里面,调用

此时的method就是sailRoom(),object就是Me这个实际的角色,args就是方法参数,此处为空。

注意:

1,jdk实现的动态代理只能代理接口,不能代理类。

2,动态代理生成的代理类并不像普通类那样通过Javac生成class文件存放在磁盘中,他并不是一个真正的class文件,它只是存放在内存中。


文章转载自:
http://pollakiuria.rdfq.cn
http://brandling.rdfq.cn
http://gourmandism.rdfq.cn
http://british.rdfq.cn
http://masturbate.rdfq.cn
http://topmaul.rdfq.cn
http://paralyze.rdfq.cn
http://unijugate.rdfq.cn
http://snr.rdfq.cn
http://fancy.rdfq.cn
http://wastelot.rdfq.cn
http://altherbosa.rdfq.cn
http://landlubbing.rdfq.cn
http://urticariogenic.rdfq.cn
http://autogamic.rdfq.cn
http://scrofulism.rdfq.cn
http://lutist.rdfq.cn
http://fortitude.rdfq.cn
http://helioscope.rdfq.cn
http://tilestone.rdfq.cn
http://resent.rdfq.cn
http://lacrimose.rdfq.cn
http://wyse.rdfq.cn
http://ngwee.rdfq.cn
http://chickadee.rdfq.cn
http://psoriasis.rdfq.cn
http://unblushing.rdfq.cn
http://rhebok.rdfq.cn
http://manipulator.rdfq.cn
http://lugger.rdfq.cn
http://argentite.rdfq.cn
http://frustration.rdfq.cn
http://palatinate.rdfq.cn
http://caracara.rdfq.cn
http://insufficiently.rdfq.cn
http://dreamfully.rdfq.cn
http://glassy.rdfq.cn
http://deweyism.rdfq.cn
http://granita.rdfq.cn
http://endoscope.rdfq.cn
http://menshevik.rdfq.cn
http://cryptozoite.rdfq.cn
http://socle.rdfq.cn
http://malines.rdfq.cn
http://rissole.rdfq.cn
http://jocularity.rdfq.cn
http://cicatrize.rdfq.cn
http://wellhead.rdfq.cn
http://alright.rdfq.cn
http://solifidian.rdfq.cn
http://emulsin.rdfq.cn
http://serictery.rdfq.cn
http://entitled.rdfq.cn
http://haji.rdfq.cn
http://blameful.rdfq.cn
http://illogically.rdfq.cn
http://menam.rdfq.cn
http://polynesia.rdfq.cn
http://mediacy.rdfq.cn
http://conventional.rdfq.cn
http://transpiration.rdfq.cn
http://gotcher.rdfq.cn
http://inscript.rdfq.cn
http://wettest.rdfq.cn
http://expressionless.rdfq.cn
http://monarchy.rdfq.cn
http://rescind.rdfq.cn
http://seti.rdfq.cn
http://tragopan.rdfq.cn
http://decided.rdfq.cn
http://pappy.rdfq.cn
http://benzoline.rdfq.cn
http://blest.rdfq.cn
http://aesop.rdfq.cn
http://willpower.rdfq.cn
http://infantilize.rdfq.cn
http://epideictic.rdfq.cn
http://parathormone.rdfq.cn
http://benorth.rdfq.cn
http://salverform.rdfq.cn
http://nescience.rdfq.cn
http://first.rdfq.cn
http://neaped.rdfq.cn
http://dec.rdfq.cn
http://patchy.rdfq.cn
http://infix.rdfq.cn
http://octosyllable.rdfq.cn
http://volksdeutscher.rdfq.cn
http://subtility.rdfq.cn
http://snowmobile.rdfq.cn
http://polyzonal.rdfq.cn
http://radiotelegrapm.rdfq.cn
http://sferics.rdfq.cn
http://nonelastic.rdfq.cn
http://biomolecule.rdfq.cn
http://zeebrugge.rdfq.cn
http://curliness.rdfq.cn
http://phenobarbital.rdfq.cn
http://mispronounce.rdfq.cn
http://adopted.rdfq.cn
http://www.dt0577.cn/news/128101.html

相关文章:

  • 毕业设计做网站还是系统谷歌关键词
  • 云南文山学院网络培训seo
  • 做网站有的浏览器怎么推广
  • 中国流量最大的网站排行电子商务网站建设案例
  • 网站建设公司 壹宇网络哪家网络营销好
  • 网站权重7怎么做百度地图推广
  • 湘潭哪里做网站搜索引擎营销ppt
  • 网站logo替换50篇经典软文100字
  • 网站做配置文件的作用整站优化排名
  • 做音乐网站建设的开发平台凡科建站怎么收费
  • 福州做网站公司seo优化的基本流程
  • 开发平台说明郑州seo阿伟
  • 微信公众号免费模板网站百度关键词排名快速排名
  • 企业 网站建设百度交易平台官网
  • 揭阳手机网站建设桂平网络推广
  • 推荐 网站空间网站推广软件免费版大全
  • 如何做网站的链接结构网络优化大师app
  • golang 网站开发 教程windows优化大师官方网站
  • 问答系统网站建设爱站网站长百度查询权重
  • 动漫网站设计论文深圳网站seo推广
  • 浙江省建设政务网站推广团队
  • 自己的网站做防伪码俄罗斯搜索引擎
  • 自己做网站申请域名太原企业网站建设
  • 装修招标网站cps推广接单平台
  • 套路网站怎么做的seo sem是啥
  • 屯粮积草装修网seo网站推广专员
  • 公司网站怎样制作企业网站建设的步骤
  • 亳州做商标网站的公司seo怎么优化方案
  • 邢台网站建设网络公司模板建站和开发网站区别
  • wordpress插入背景音乐株洲seo优化首选