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

网络营销分析论文福州seo博客

网络营销分析论文,福州seo博客,wordpress访问权限,海外打开网站慢经典的设计模式有23种,但是常用的设计模式一般情况下不会到一半,我们就针对一些常用的设计模式进行一些详细的讲解和分析,方便大家更加容易理解和使用设计模式。 1-什么是模板模式 模板模式,全称是模板方法设计模式,英…

       经典的设计模式有23种,但是常用的设计模式一般情况下不会到一半,我们就针对一些常用的设计模式进行一些详细的讲解和分析,方便大家更加容易理解和使用设计模式。

1-什么是模板模式

       模板模式,全称是模板方法设计模式,英文是Template Method Design Pattern。在GoF的《设计模式》一书中,它是这么定义的:Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm’s structure.翻译成中文就是:模板方法模式在一个方法中定义一个算法骨架,并将某些步骤推迟到子类中实现。模板方法模式可以让子类在不改变算法整体结构的情况下,重新定义算法中的某些步骤。模板模式主要是用来解决复用扩展两个问题。

       在模板模式经典的实现中,模板方法定义为final,可以避免被子类重写。需要子类重写的方法定义为abstract,可以强迫子类去实现。不过,在实际项目开发中,模板模式的实现比较灵活,以上两点都不是必须的。

public abstract class AbstractClass {public final void templateMethod() {//...method1();//...method2();//...}protected abstract void method1();protected abstract void method2();
}public class ContreteClass1 extends AbstractClass {@Overrideprotected void method1() {//...}@Overrideprotected void method2() {//...}
}public class ContreteClass2 extends AbstractClass {@Overrideprotected void method1() {//...}@Overrideprotected void method2() {//...}
}AbstractClass demo = ContreteClass1();
demo.templateMethod();

      templateMethod()函数定义为final,是为了避免子类重写它。method1()和method2()定义为abstract,是为了强迫子类去实现。模板模式把一个算法中不变的流程抽象到父类的模板方法templateMethod()中,将可变的部分method1()、method2()留给子类ContreteClass1和ContreteClass2来实现。所有的子类都可以复用父类中模板方法定义的流程代码。

2-jdk中使用模板方法

       在Java AbstractList类中,addAll()函数可以看作模板方法,add()是子类需要重写的方法,尽管没有声明为abstract的,但函数实现直接抛出了UnsupportedOperationException异常。前提是,如果子类不重写是不能使用的。

3-模板模式与Callback回调函数

       做过支付的肯定知道,回调是什么,比如,通过三方支付系统来实现支付功能,用户在发起支付请求之后,一般不会一直阻塞到支付结果返回,而是注册回调接口(类似回调函数,一般是一个回调用的URL)给三方支付系统,等三方支付系统执行完成之后,将结果通过回调接口返回给用户。

       回调可以分为同步回调和异步回调(或者延迟回调)。同步回调指在函数返回之前执行回调函数;异步回调指的是在函数返回之后执行回调函数。从应用场景上来看,同步回调看起来更像模板模式,异步回调看起来更像观察者模式。

(1)Template类

       Spring提供了很多Template类,比如,JdbcTemplate、RedisTemplate、RestTemplate。尽管都叫作xxxTemplate,但它们并非基于模板模式来实现的,而是基于回调来实现的,确切地说应该是同步回调。而同步回调从应用场景上很像模板模式,所以,在命名上,这些类使用Template(模板)这个单词作为后缀。

      JdbcTemplate通过回调的机制,将不变的执行流程抽离出来,放到模板方法execute()中,将可变的部分设计成回调StatementCallback,由用户来定制。query()函数是对execute()函数的二次封装,让接口用起来更加方便

(2)addShutdownHook()

JVM提供了Runtime.addShutdownHook(Thread hook)方法,可以注册一个JVM关闭的Hook。当应用程序关闭的时候,JVM会自动调用Hook代码。

public class ShutdownHookDemo {private static class ShutdownHook extends Thread {public void run() {System.out.println("I am called during shutting down.");}}public static void main(String[] args) {System.out.println("111111111111111");Runtime.getRuntime().addShutdownHook(new ShutdownHook());System.out.println("2222222222222222");}}

       有关Hook的逻辑都被封装到ApplicationShutdownHooks类中了。当应用程序关闭的时候,JVM会调用这个类的runHooks()方法,创建多个线程,并发地执行多个Hook。我们在注册完Hook之后,并不需要等待Hook执行完成,所以,这也算是一种异步回调。

4-小结

      从应用场景上来看,同步回调跟模板模式几乎一致。它们都是在一个大的算法骨架中,自由替换其中的某个步骤,起到代码复用和扩展的目的。而异步回调跟模板模式有较大差别,更像是观察者模式。

      从代码实现上来看,回调和模板模式完全不同。回调基于组合关系来实现,把一个对象传递给另一个对象,是一种对象之间的关系;模板模式基于继承关系来实现,子类重写父类的抽象方法,是一种类之间的关系。

       组合优于继承。实际上,这里也不例外。在代码实现上,回调相对于模板模式会更加灵活,主要体现在下面几点:
(1)像Java这种只支持单继承的语言,基于模板模式编写的子类,已经继承了一个父类,不再具有继承的能力。
(2)回调可以使用匿名类来创建回调对象,可以不用事先定义类;而模板模式针对不同的实现都要定义不同的子类。
(3)如果某个类中定义了多个模板方法,每个方法都有对应的抽象方法,那即便我们只用到其中的一个模板方法,子类也必须实现所有的抽象方法。而回调就更加灵活,我们只需要往用到的模板方法中注入回调对象即可。

http://www.khdw.cn/news/17616.html

相关文章:

  • 营销推广方案怎么写临沧seo
  • 传奇私服网站做ssl春哥seo博客
  • 企业网站做多大尺寸seo内部优化包括哪些内容
  • php做的购物网站系统下载百度获客平台怎么收费的
  • 做网站的内容资源seo策略什么意思
  • 灯塔网站制作公司百度推广登录首页
  • 企业文化墙设计网站推荐自动优化app
  • 我们做网站 老公弟弟也跟着做天津网站优化公司
  • 网站建设便宜b站推广网站2024
  • 英文网站设计多少钱搜多多搜索引擎入口
  • 网站建设 营销营销型企业网站建设的内容
  • 学校网站建设用哪个系统百度关键词优化方法
  • 手表网站建设策划腾讯朋友圈广告怎么投放
  • 网站视频解析临沂网站seo
  • 武汉网站建设公司有哪些bt磁力王
  • 做视频网站虚拟主机怎么选灰色产业推广引流渠道
  • wix怎么做网站交换链接网站
  • mac wordpress本地安装插件网站建设优化的技巧
  • 国外的网站用不用备案网络营销怎么推广
  • 阿里云服务器可以做多少个网站网络推广优化方案
  • da面板做两个网站建一个外贸独立站大约多少钱
  • 高品质的佛山网站建设电商怎么做如何从零开始
  • 网站模版上传空间后怎么做如何自己制作网页
  • 嘉兴企业网站设计哪家好互联网广告公司排名前十
  • 网站开发公司报价单模板营销推广的公司
  • 网络营销方案定义思路广州做seo整站优化公司
  • 东莞市手机网站建设品牌济南网站推广优化
  • 用备案的网站做违法网站惠州短视频seo
  • 网推资源网站宁波百度seo排名优化
  • 红酒 专业 网站建设关键词云图