当前位置: 首页> 健康> 母婴 > 建设网站找哪个公司_网络推广培训学费几万_网建公司_seo常用优化技巧

建设网站找哪个公司_网络推广培训学费几万_网建公司_seo常用优化技巧

时间:2025/7/28 17:17:50来源:https://blog.csdn.net/m0_64637029/article/details/145675502 浏览次数:0次
建设网站找哪个公司_网络推广培训学费几万_网建公司_seo常用优化技巧

文章目录

    • 1.模板方法模式
        • 1.目录结构
        • 2.AbstractClass.java 抽象类
        • 3.Client.java
        • 4.测试结果
        • 5.总结
    • 2.生成器模式
        • 1.目录结构
        • 2.Computer.java 生成器模式构建电脑
        • 3.Client.java
        • 4.测试结果
        • 5.总结

1.模板方法模式

1.目录结构

CleanShot 2025-01-27 at 14.11.21@2x

2.AbstractClass.java 抽象类
package com.sunxiansheng.design_pattern.template;/*** Description: 抽象类** @Author sun* @Create 2025/1/27 13:49* @Version 1.0*/
public abstract class AbstractClass {/*** 模板方法*/public void templateMethod() {// 先调用抽象方法abstractMethod();// 然后根据钩子方法的返回值来决定是否要调用基本方法if (callingBasicMethods()) {baseMethod();}}/*** 基本方法(抽象类写好的方法)*/protected void baseMethod() {System.out.println("基本方法被调用!");}/*** 抽象方法(交给子类去实现,也只有子类才可以访问)*/protected abstract void abstractMethod();/*** 钩子方法(用来改变模板方法的行为,子类可以去重写)** @return 是否调用基本方法,默认为true*/protected boolean callingBasicMethods() {return true;}
}
3.Client.java
package com.sunxiansheng.design_pattern.template;/*** Description: 客户端** @Author sun* @Create 2025/1/27 14:07* @Version 1.0*/
public class Client {public static void main(String[] args) {// 创建一个具体类的对象(不重写钩子方法)AbstractClass abstractClassA = new AbstractClass() {@Overrideprotected void abstractMethod() {System.out.println("abstractClassA实现的抽象方法");}};abstractClassA.templateMethod();System.out.println("------------------------------");// 创建一个具体类的对象(重写钩子方法)AbstractClass abstractClassB = new AbstractClass() {@Overrideprotected void abstractMethod() {System.out.println("abstractClassB实现的抽象方法");}@Overrideprotected boolean callingBasicMethods() {return false;}};abstractClassB.templateMethod();}
}
4.测试结果

CleanShot 2025-01-27 at 14.12.05@2x

5.总结

模板方法模式最核心的就是一个抽象类,这个抽象类包含了四种类型的方法,第一种是模板方法,负责调用其他三种方法来完成具体的功能,第二种是普通方法,这个方法就是在抽象类中定义好的方法,可以直接被模板方法调用,第三种是抽象方法,这个方法需要由子类去实现。第四种是钩子方法,就是模板方法可以根据这个方法的返回值来决定具体的逻辑,一般父类中有默认实现,但是子类可以去重写,从而去改变模板方法的执行逻辑。

2.生成器模式

1.目录结构

2.Computer.java 生成器模式构建电脑
package com.sunxiansheng.design_pattern.builder;/*** Description: 生成器模式构建电脑** @Author sun* @Create 2025/1/31 15:21* @Version 1.0*/
public class Computer {// 必选参数private String cpu;private String ram;// 可选参数private int storage;private String graphicsCard;// 私有化构造函数,使用Builder进行创建private Computer(Builder builder) {this.cpu = builder.cpu;this.ram = builder.ram;this.storage = builder.storage;this.graphicsCard = builder.graphicsCard;}public static class Builder {// 必选参数private String cpu;private String ram;// 可选参数(有默认值)private int storage = 256;private String graphicsCard = "Integrated";// 构造函数,初始化必选参数public Builder(String cpu, String ram) {this.cpu = cpu;this.ram = ram;}// setter方法设置可选参数public Builder setStorage(int storage) {this.storage = storage;return this;}public Builder setGraphicsCard(String graphicsCard) {this.graphicsCard = graphicsCard;return this;}// 构建并返回一个Computer对象public Computer build() {return new Computer(this);}}@Overridepublic String toString() {return "Computer{" +"cpu='" + cpu + '\'' +", ram='" + ram + '\'' +", storage=" + storage +", graphicsCard='" + graphicsCard + '\'' +'}';}
}
3.Client.java
package com.sunxiansheng.design_pattern.builder;/*** Description: 客户端** @Author sun* @Create 2025/1/31 15:34* @Version 1.0*/
public class Client {public static void main(String[] args) {Computer computer = new Computer.Builder("Intel", "16GB").setStorage(512).setGraphicsCard("NVIDIA").build();System.out.println(computer);}
}
4.测试结果

CleanShot 2025-01-31 at 15.39.09@2x

5.总结

生成器模式就是用来构建一个对象的,首先要构建的对象一般是有必选参数和可选参数的,然后有一个静态内部类Builder,这个类的属性跟要构建的对象是完全一致的,通过构造器去设置必选参数,然后使用setter方法去设置可选参数,当然也可以通过返回this来实现链式调用,最后再调用一个build方法使用builder对象的属性值来构建一个想要构建的对象。

关键字:建设网站找哪个公司_网络推广培训学费几万_网建公司_seo常用优化技巧

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: