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

企业网站样板制作同行抄袭公司网站

企业网站样板制作,同行抄袭公司网站,360免费wifi为什么连接不上,做网站编辑需要学什么设计模式-模板方法模式#xff08;Template Method#xff09; 一、模板方法模式概述1.1 什么是模板方法模式1.2 简单实现模板方法模式1.3 使用模板方法模式的注意事项 二、模板方法模式的用途三、模板方法模式实现方式3.1 抽象类中定义模板方法#xff0c;子类实现具体方法… 设计模式-模板方法模式Template Method 一、模板方法模式概述1.1 什么是模板方法模式1.2 简单实现模板方法模式1.3 使用模板方法模式的注意事项 二、模板方法模式的用途三、模板方法模式实现方式3.1 抽象类中定义模板方法子类实现具体方法。3.2 抽象类中定义模板方法子类实现部分方法父类提供默认实现。3.3 抽象类中定义多个模板方法每个模板方法对应不同的算法流程。3.4 抽象类中定义带参数的模板方法子类根据参数选择不同的算法流程。 一、模板方法模式概述 1.1 什么是模板方法模式 模板方法模式也被称为模板模式是一种行为型设计模式。它在一个抽象类中公开定义了执行其方法的模板规定了算法的骨架。其主要特点是将一些步骤延迟到子类中这些子类可以按需要重写方法实现但调用将以抽象类中定义的方式进行。 这种类型的设计模式主要解决了一些通用的方法在每一个子类都重新写了这一问题其主要目的是将这些通用算法抽象出来。通过使用模板方法模式子类可以在不改变算法结构的情况下重新定义算法中的某些特定步骤。 例如在建筑行业中造房子的地基、走线、水管等步骤都是一样的只有在建筑的后期才会有加壁橱加栅栏等差异。在这种情况下可以使用模板方法模式来规划和设计建筑流程。另一个例子是西游记中的81难这就是一个典型的顶层逻辑骨架。 1.2 简单实现模板方法模式 首先创建一个抽象类AbstractClass其中包含一个抽象方法templateMethod()这个方法包含了算法的骨架。然后创建两个子类ConcreteClassA和ConcreteClassB分别实现了templateMethod()方法。 // 抽象类 public abstract class AbstractClass {// 抽象方法包含算法的骨架public final void templateMethod() {step1();step2();step3();}// 具体步骤1protected abstract void step1();// 具体步骤2protected abstract void step2();// 具体步骤3protected abstract void step3(); }// 子类A public class ConcreteClassA extends AbstractClass {Overrideprotected void step1() {System.out.println(子类A执行步骤1);}Overrideprotected void step2() {System.out.println(子类A执行步骤2);}Overrideprotected void step3() {System.out.println(子类A执行步骤3);} }// 子类B public class ConcreteClassB extends AbstractClass {Overrideprotected void step1() {System.out.println(子类B执行步骤1);}Overrideprotected void step2() {System.out.println(子类B执行步骤2);}Overrideprotected void step3() {System.out.println(子类B执行步骤3);} }最后在客户端代码中可以创建不同的子类对象并调用它们的templateMethod()方法来执行算法 public class Client {public static void main(String[] args) {AbstractClass concreteClassA new ConcreteClassA();concreteClassA.templateMethod();AbstractClass concreteClassB new ConcreteClassB();concreteClassB.templateMethod();} }运行客户端代码可以看到输出结果如下 子类A执行步骤1 子类A执行步骤2 子类A执行步骤3 子类B执行步骤1 子类B执行步骤2 子类B执行步骤31.3 使用模板方法模式的注意事项 1、抽象类应该定义算法的骨架将一些步骤延迟到子类中实现。这些步骤应该是通用的可以被不同的子类重写。 2、抽象类中的抽象方法需要声明为final防止被子类修改。 3、抽象类可以包含一些具体的方法这些方法可以在子类中被覆盖或直接调用。 4、子类需要实现抽象类中的所有抽象方法否则子类也必须声明为抽象类。 5、客户端代码应该针对抽象类进行编程而不是针对具体的子类。这样可以提高代码的可扩展性和可维护性。 6、在模板方法模式中子类可以根据需要对算法的某些特定步骤进行修改但是整个算法的结构不应该被改变。 7、模板方法模式适用于那些算法结构相对稳定但某些步骤需要根据具体情况进行变化的场景。如果算法结构经常发生变化那么使用策略模式可能更加合适。 二、模板方法模式的用途 模板方法模式也被称为模板模式Template Pattern是一种行为型设计模式。它在一个抽象类中公开定义了执行其方法的模板规定了算法的骨架。其主要特点是将一些步骤延迟到子类中实现这些步骤可以是通用的可以被不同的子类重写。 在Java编程语言中模板方法模式被广泛应用。例如在Servlet中有一种叫做processRequest的方法这个方法就是一个模板方法定义了一系列的流程如获取请求参数、调用service方法处理业务逻辑、返回响应结果等。具体的业务逻辑处理则由子类去实现。 此外模板方法模式还常用于创建复杂的对象。比如在创建一个复杂的汽车对象时这个汽车有很多部件和功能有些部件和功能的创建和装配过程是相似的而有些则是独特的。在这种情况下就可以使用模板方法模式来定义一个汽车对象的创建和装配过程的骨架然后让子类去实现具体的创建和装配过程。 总的来说模板方法模式的优点在于提高代码复用性增加扩展性并且符合开闭原则。 三、模板方法模式实现方式 3.1 抽象类中定义模板方法子类实现具体方法。 这是最常见的实现方式也是最简单的实现方式。 // 定义一个抽象类 public abstract class Animal {// 定义一个模板方法public void makeSound() {// 默认实现System.out.println(动物发出声音);} }// 定义一个子类实现抽象类中的模板方法 public class Dog extends Animal {Overridepublic void makeSound() {// 具体实现System.out.println(汪汪汪);} }// 定义一个子类实现抽象类中的模板方法 public class Cat extends Animal {Overridepublic void makeSound() {// 具体实现System.out.println(喵喵喵);} }// 测试代码 public class Main {public static void main(String[] args) {Animal dog new Dog();dog.makeSound(); // 输出汪汪汪Animal cat new Cat();cat.makeSound(); // 输出喵喵喵} }3.2 抽象类中定义模板方法子类实现部分方法父类提供默认实现。 这种方式可以使得子类更加灵活可以根据需要选择是否覆盖父类的方法。 要实现抽象类中定义模板方法子类实现部分方法父类提供默认实现可以按照以下步骤进行 创建一个抽象类包含一个抽象方法作为模板方法。 在抽象类中定义一个或多个默认实现的方法。 创建子类继承抽象类并实现抽象方法。 在子类中覆盖父类的默认实现方法。 以下是一个简单的示例 // 抽象类 public abstract class Animal {// 模板方法public void makeSound() {System.out.println(动物发出声音);}// 默认实现方法public void eat() {System.out.println(动物吃东西);} }// 子类 public class Dog extends Animal {// 实现抽象方法Overridepublic void makeSound() {System.out.println(汪汪汪);}// 覆盖父类的默认实现方法Overridepublic void eat() {System.out.println(狗狗吃骨头);} }// 测试代码 public class Main {public static void main(String[] args) {Animal dog new Dog();dog.makeSound(); // 输出汪汪汪dog.eat(); // 输出狗狗吃骨头} }3.3 抽象类中定义多个模板方法每个模板方法对应不同的算法流程。 这种方式适用于有多种算法流程的场景可以提高代码的可读性和可维护性。 要实现抽象类中定义带参数的模板方法子类根据参数选择不同的算法流程可以按照以下步骤进行 1、创建一个抽象类包含一个带有参数的抽象方法作为模板方法。2、在抽象类中定义一个或多个默认实现的方法。3、创建子类继承抽象类并实现抽象方法。4、在子类的实现方法中根据传入的参数选择不同的算法流程。 以下是一个简单的示例 // 抽象类 public abstract class AbstractClass {// 带参数的抽象方法作为模板方法public abstract void templateMethod(int param);// 默认实现的方法public void defaultMethod() {System.out.println(这是默认实现的方法);} }// 子类 public class SubClass extends AbstractClass {// 实现抽象方法Overridepublic void templateMethod(int param) {if (param 0) {algorithmA();} else {algorithmB();}}// 根据参数选择不同的算法流程private void algorithmA() {System.out.println(执行算法A);}private void algorithmB() {System.out.println(执行算法B);} }// 测试代码 public class Main {public static void main(String[] args) {SubClass subClass new SubClass();subClass.templateMethod(1); // 输出执行算法AsubClass.templateMethod(-1); // 输出执行算法BsubClass.defaultMethod(); // 输出这是默认实现的方法} }3.4 抽象类中定义带参数的模板方法子类根据参数选择不同的算法流程。 这种方式适用于算法流程比较复杂的场景可以提高代码的灵活性和扩展性。 要实现抽象类中定义带参数的模板方法子类根据参数选择不同的算法流程可以按照以下步骤进行 1、创建一个抽象类包含一个带有参数的抽象方法作为模板方法。2、在抽象类中定义一个或多个默认实现的方法。3、创建子类继承抽象类并实现抽象方法。4、在子类的实现方法中根据传入的参数选择不同的算法流程。 以下是一个简单的示例 // 抽象类 public abstract class AbstractClass {// 带参数的抽象方法作为模板方法public abstract void templateMethod(int param);// 默认实现的方法protected void defaultMethod() {System.out.println(这是默认实现的方法);} }// 子类 public class SubClass extends AbstractClass {Overridepublic void templateMethod(int param) {if (param 0) {algorithmA();} else {algorithmB();}}private void algorithmA() {System.out.println(执行算法A);}private void algorithmB() {System.out.println(执行算法B);} }// 测试代码 public class Main {public static void main(String[] args) {SubClass subClass new SubClass();subClass.templateMethod(1); // 输出执行算法AsubClass.templateMethod(-1); // 输出执行算法B} }
http://www.tj-hxxt.cn/news/136167.html

相关文章:

  • 番禺建网站南宁建设网站
  • 深圳物流公司网站公司网站备案需要哪些资料
  • WordPress网站修改做基因表达热图的网站
  • 网站建设科技公司外部环境分析创新型的顺的网站制作
  • 国内做轮胎网站哪家好怎么安装百度
  • 重庆网站建设搜外杭州公司注册费用
  • 做五金奖牌进什么网站湛江赤坎孵化器网站建设招聘
  • 网站建设自己建设工程合同在性质上属于什么合同
  • 手机搞笑网站模板下载安装中国建筑人事部大全
  • 在线考试网站模板网站seo方案
  • 做设计的地图网站有哪些十大景观设计公司排名
  • 网站设计不需要考虑怎样做淘宝联盟网站
  • 外贸网站建设入门建设食品网站
  • 哪个小说网站版权做的好处wordpress插件video playe
  • 南通免费网站建设织梦大气婚纱影楼网站源码
  • 怎么才能把网站优化做好服装设计个人工作室
  • 织梦做网站主页容易吗娱乐城网站开发
  • 优秀企业网站建设哪家服务好网站建设社团活动宗旨
  • 大悟建设局网站怎么以公司名义注册邮箱
  • 个人网站怎么做支付微信上wordpress
  • 软件网站建设基本流程图网站建设毕业设计报告书
  • 梯子seo网络优化师招聘
  • 网站后台英语财务软件哪个好用
  • 网站推广公司汉狮网络江干区网站建设
  • 北京网站推广优化上海网站建设推荐案例
  • 网站搜索推广方案论文上海网站备案审核
  • 哪种类型的网站比较难做制作英文网站多少钱
  • 360永久免费建网站专业柳州网站建设多少钱
  • 济南外贸网站中国建设app官方下载
  • 免费网站模板怎么做网站做的网站怎么上传到网上