zoukankan      html  css  js  c++  java
  • java设计模式-模板方法模式

      第一次好好的看设计模式,可能有不对的地方,大佬们可以下面指出,感谢!

      ----------- 分割线 ----------

      考题抄错会做也白搭——模板方法模式

    uml图:

    代码中可能用到的地方:

    1、很多类存在许多耦合,可以抽取模板父类

    2、业务存在耦合,可以进行抽取模板,不考虑业务实现,但是业务结果是一致的

    现在的电脑组装,也是个模板方法模式呢,电脑主要由主板、硬盘、处理器、显卡、显示屏、组成;

    定义一个电脑类:

    public abstract class Computer {
    
        public String board;//主板
    
        public String caliche;//硬盘
    
        public String cpu;//处理器
    
        public String graphicsCard;//显卡
    
        public String display;//显示屏
    
        public abstract void board();
    
        public abstract void caliche();
    
        public abstract void cpu();
    
        public abstract void graphicsCard();
    
        public abstract void display();
    
        public void assemble(){
            board();
            caliche();
            cpu();
            graphicsCard();
            display();
            System.out.println("组装电脑成功,电脑主板是:"+board+",硬盘是:"+caliche+",处理器是:"+cpu+",显卡是:"+
                    graphicsCard+",显示屏是;"+display);
            System.out.println(JSON.toJSONString(this));
        }
    
    }
    

    三星电脑实现类:

    public class Samsung extends Computer {
        @Override
        public void board() {
            this.board = "三星主板";
            System.out.println("组装上了"+board);
        }
    
        @Override
        public void caliche() {
            this.caliche = "256GB的SSD硬盘";
            System.out.println("组装上了"+caliche);
        }
    
        @Override
        public void cpu() {
            this.cpu = "i7-8565U";
            System.out.println("组装上了"+cpu);
        }
    
        @Override
        public void graphicsCard() {
            this.graphicsCard = "独立显卡4GB";
            System.out.println("组装上了"+graphicsCard);
        }
    
        @Override
        public void display() {
            this.display = "13.3英寸显示屏";
            System.out.println("组装上了"+display);
        }
    }

    戴尔电脑实现类:

    public class Dell extends Computer {
        @Override
        public void board() {
            this.board = "戴尔主板";
            System.out.println("组装上了"+board);
        }
    
        @Override
        public void caliche() {
            this.caliche = "512GB的SSD硬盘";
            System.out.println("组装上了"+caliche);
        }
    
        @Override
        public void cpu() {
            this.cpu = "i7-8550U";
            System.out.println("组装上了"+cpu);
        }
    
        @Override
        public void graphicsCard() {
            this.graphicsCard = "GTX1050";
            System.out.println("组装上了"+graphicsCard);
        }
    
        @Override
        public void display() {
            this.display = "15.6英寸显示屏";
            System.out.println("组装上了"+display);
        }
    }

    程序调用:

    public class Main {
    
        public static void main(String[] args) throws CloneNotSupportedException {
            Computer samsung = new Samsung();
            samsung.assemble();
            System.out.println("---------分割线-----------");
            Computer dell = new Dell();
            dell.assemble();
        }
    
    }

    结果:

    定义好了电脑模板,接下来去实现电脑模板就能组装出各种电脑了,这就是模板方法模式。

    定义模板,但是不是由自己实现,谁需要产品实现模板,做出产品;代码、业务解耦。

  • 相关阅读:
    数据库设计时间修饰词
    Tomcat手动指定jdk路径
    linux删除乱码文件[转载]
    elasticsearch简单查询
    elasticsearch批量删除(查询删除)
    elasticsearch使用Analyze API
    elasticsearch批量索引数据示例
    Elasticsearch创建索引和映射结构详解
    mysql设置服务器编码
    HBase单机模式安装
  • 原文地址:https://www.cnblogs.com/ghsy/p/11114217.html
Copyright © 2011-2022 走看看