微信小程序模板函数

微信小程序的视图模板的{{}} 方法并不支持直接调用js函数,比如 {{ (new Date()).toLocaleString() }}是无法编译成我们期望的结果的。 我们需要将js函数封装至wxs模块,然后便可以调用 # utils/date.wxsconst date = { now: function() { return (new Date()).toLocaleString() }}module.export = date# pages/date/date.wxml<wxs module="date" src="../../utils/date.wxs"></wxs><view>{{ date.now() }}</view>即刻。

September 8, 2019 · 1 min · jiezi

Java设计模式模板方法模式

定义Define the skeleton of an algorithm in an operation,deferring some steps to subclasses.TemplateMethod lets subclasses redefine certain steps of an algorithm without changing the algorithm'sstructure.定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 模板方法模式非常简单,主要是用了Java的继承机制,话不多说,直接上代码 实现抽象模板类public abstract class AbstractClass { /** * 基本方法 */ protected abstract void doSomething(); /** * 基本方法,可以有默认实现 */ protected void doAnything() { System.out.println("AbstractClass doAnything()"); } /** * 模板方法,为了防止恶意的操作,一般模板方法都加上final关键字,不允许被覆写 */ public final void templateMethod(){ doSomething(); doAnything(); }}具体模板类public class ConcreteClassA extends AbstractClass { @Override protected void doSomething() { System.out.println("ConcreteClassA doSomething()"); } @Override protected void doAnything() { System.out.println("ConcreteClassA doAnything()->我不想使用父类的默认实现,我要覆盖它"); }}public class ConcreteClassB extends AbstractClass { @Override protected void doSomething() { System.out.println("ConcreteClassB doSomething()"); } // 使用父类doAnything()的默认实现}客户端代码public class Client { public static void main(String[] args) { AbstractClass a = new ConcreteClassA(); a.templateMethod(); AbstractClass b = new ConcreteClassB(); b.templateMethod(); }}优点封装不变部分,扩展可变部分提取公共部分代码,便于维护行为由父类控制,子类实现缺点子类影响父类按照我们的设计习惯,抽象类负责声明最抽象、最一般的事物属性和方法,实现类完成 ...

June 24, 2019 · 2 min · jiezi

行为型模式:模板方法

LieBrother公众号原文:行为型模式:模板方法十一大行为型模式之一:模板方法。简介姓名 :模板方法英文名 :Template Method Pattern价值观 :在我的掌控下,任由你发挥个人介绍 :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.定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。(来自《设计模式之禅》)解释一下上面的介绍,意思是由父类来定义框架,让子类来具体实现。你要的故事刚过完春节,大家都买新鞋了么?今天要讲的故事和鞋子有关。一双鞋子从表面来看,由鞋底、鞋垫、鞋面、鞋带组成,同一系列的鞋子这几个部分都是一样的,用同样的材料做出来,不同系列的鞋子就大相径庭了。根据模板方法模式,组装一双鞋子的制造过程可以归并为固定的框架,至于用什么材料,那由每个系列的鞋子去具体实现。我们先看定义组装鞋子的框架代码。/** * 定义鞋子制造的工序框架 /abstract class ShoeInstallTemplate { public abstract void installSole(); public abstract void installInsole(); public abstract void installVamp(); public abstract void installShoelace(); public void installShot(){ System.out.println(“组装一双鞋,步骤如下:”); // 组装鞋底 installSole(); // 组装鞋垫 installInsole(); // 组装鞋面 installVamp(); // 组装鞋带 installShoelace(); }}定义了一个组装鞋子框架的抽象类 ShoeInstallTemplate,里面有 4 个工序未具体实现,由鞋子制造商去实现,因为只有鞋子制造商才知道鞋子要用什么材料来做。下面举 2 个比较出名的鞋子:Adidas 的 Boost 系列和 Nike 的 Jordan 系列。下面分别实现这 2 个系列鞋子的制造代码。/* * Adidas Boost 鞋制造 /class AdidasBoostShoeInstall extends ShoeInstallTemplate { @Override public void installSole() { System.out.println(“组装白色 Boost 鞋底”); } @Override public void installInsole() { System.out.println(“组装黑色 Boost 鞋垫”); } @Override public void installVamp() { System.out.println(“组装黑色 Boost 鞋面”); } @Override public void installShoelace() { System.out.println(“组装黑色 Boost 鞋带”); }}/* * Nike Jordan 鞋制造 */class NikeJordanShoeInstall extends ShoeInstallTemplate { @Override public void installSole() { System.out.println(“组装黑色 Jordan 鞋底”); } @Override public void installInsole() { System.out.println(“组装黑色 Jordan 鞋垫”); } @Override public void installVamp() { System.out.println(“组装红色 Jordan 鞋面”); } @Override public void installShoelace() { System.out.println(“组装红色 Jordan 鞋带”); }}实现了制造商制造鞋子的代码之后,我们通过代码测试怎么制造 Boost 和 Jordan 鞋子。public class TemplateMethodTest { public static void main(String[] args) { ShoeInstallTemplate adidasBoost = new AdidasBoostShoeInstall(); adidasBoost.installShot(); ShoeInstallTemplate nikeJordan = new NikeJordanShoeInstall(); nikeJordan.installShot(); }}打印结果:组装一双鞋,步骤如下:组装白色 Boost 鞋底组装黑色 Boost 鞋垫组装黑色 Boost 鞋面组装黑色 Boost 鞋带组装一双鞋,步骤如下:组装黑色 Jordan 鞋底组装黑色 Jordan 鞋垫组装红色 Jordan 鞋面组装红色 Jordan 鞋带模板方法模式就这么简单。是不是掌握了?代码:Template Method Pattern总结模板方法是一个比较实用的模式,为什么说实用呢?举个现实的例子,Java 能有如今的发展,离不开各大开源框架,比如 Dubbo,有看过源码的朋友就知道,里面大量代码运用了模板方法设计模式,为什么 Dubbo 可以支持很多种注册中心?其实本质就是用了模板方法设计模式,使得可以扩展多种注册中心。掌握好模板方法,对读源码有非常大的帮助,很多人包括我在内,在刚开始阅读源码的时候,有相当长的一段时间怀疑人生,怎么这些代码那么绕?调来调去的。当你了解了常用的设计模式之后,看源代码就可以直截了当的知道是用什么设计模式,为什么用这个设计模式?原来是为了什么什么。。。有了这层思考,就像有一条线将以前散落在各地的知识点连接起来,成了可以推敲的知识。参考资料:《大话设计模式》、《设计模式之禅》推荐阅读:设计模式系列文章希望文章对您有所帮助,设计模式系列会持续更新,感兴趣的同学可以关注公众号:LieBrother,第一时间获取文章推送阅读,也可以一起交流,交个朋友。 ...

February 17, 2019 · 2 min · jiezi