• 设计模式-模板模式


    1、模板模式简介

    定义:一种类行为型模式,定义一个操作中的骨架,而将实现步骤的延迟到子类中,使得子类可以不改变该骨架结构的情况下重定义某些特定步骤

    目标:不改变步骤实现不同的结果

    解决问题:解决因为小部分差异而导致的代码冗余

    优点:封装了不变部分,扩展可变部分。它把认为是不变部分的算法封装到父类中实现,而把可变部分算法由子类继承实现,便于子类继续扩展,在父类中提取了公共的部分代码,便于代码复用

       部分方法是由子类实现的,因此子类可以通过扩展方式增加相应的功能,符合开闭原则。

    缺点:对每个不同的实现都需要定义一个子类,这会导致类的个数增加,系统更加庞大,设计也更加抽象,间接地增加了系统实现的复杂度

       父类中的抽象方法由子类实现,子类执行的结果会影响父类的结果,这导致一种反向的控制结构,它提高了代码阅读的难度

       由于继承关系自身的缺点,如果父类添加新的抽象方法,则所有子类都要改一遍

    实现:

     1 /**抽象类**/
     2 public abstract class fatherClass {
     3     /**抽象类**/
     4     public void TemplateMethod(){
     5         //抽象方法
     6         Template1();
     7         Template2();
     8         Template3();
     9     }
    10     /**具体方法**/
    11     public void Template1(){
    12         System.out.println("模板方法壹号");
    13     }
    14     /**抽象方法1**/
    15     public abstract void Template2();
    16     /**抽象方法2**/
    17     public abstract void Template3();
    18 }
    19 
    20 /**具体子类1**/
    21 public class son1Class extends fatherClass {
    22     @Override
    23     public void Template2() {
    24         System.out.println("son1 抽象方法壹号");
    25     }
    26 
    27     @Override
    28     public void Template3() {
    29         System.out.println("son1 抽象方法贰号");
    30     }
    31 }
    32 
    33 /**具体子类2**/
    34 public class son2Class extends fatherClass {
    35     @Override
    36     public void Template2() {
    37         System.out.println("son2 抽象方法壹号");
    38     }
    39 
    40     @Override
    41     public void Template3() {
    42         System.out.println("son2 抽象方法贰号");
    43     }
    44 }
    45 
    46 /**测试方法**/
    47 public class test {
    48     public static void main(String[] args) {
    49         fatherClass fatherClass = new son1Class();
    50         fatherClass.TemplateMethod();
    51         System.out.println("========================================");
    52         fatherClass fatherClass1 = new son2Class();
    53         fatherClass1.TemplateMethod();
    54     }
    55 }
    56 
    57 测试结果:
    58 模板方法壹号
    59 son1 抽象方法壹号
    60 son1 抽象方法贰号
    61 ========================================
    62 模板方法壹号
    63 son2 抽象方法壹号
    64 son2 抽象方法贰号
  • 相关阅读:
    C# 动态装载 DLL
    【网摘阅读】舒迅:产品经理必读的九步法
    闲谈造楼与软件测试
    文章阅读
    【原】浅谈测试和产品
    【产品经理】用户体验时代的9条建议
    【产品经理】产品经理的十大顶级错误
    头皮溢脂性皮炎推荐联合治疗:采乐50ml+希尔生100g(请看详情页)维生素B2维生素B6
    月入万元或不需缴税!九张图带你看懂个税新规
    美国比较好的保健品推荐
  • 原文地址:https://www.cnblogs.com/carblack/p/14109591.html
Copyright © 2020-2023  润新知