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

app软件网站开发网站建站公司有必要做吗

app软件网站开发,网站建站公司有必要做吗,徐州建站服务,西安网页制作培训机构一、定义: 定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 二、结构: AbstractClass抽象类:定义算法的骨架,包含模板方法和若干…

一、定义:

        定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

二、结构:

        AbstractClass抽象类:定义算法的骨架,包含模板方法和若干基本方法(抽象方法、具体方法、钩子方法)。

        ConcreteClass具体子类:实现抽象类中的抽象方法,覆盖某些具体方法或钩子方法以定制算法的步骤。

三、代码示例:

        1.抽象模板类

public abstract class DataExporter {

    // 模板方法(final禁止覆盖)
    public final void exportData(List<String> data, String filename) {
        if (validateData(data)) {
            String formattedData = formatData(data); // 抽象方法
            writeToFile(formattedData, filename);     // 抽象方法
            sendNotification();                      // 钩子方法
        }
    }

    // 抽象方法(子类必须实现)
    protected abstract String formatData(List<String> data);
    protected abstract void writeToFile(String content, String filename);

    // 具体方法(默认实现)
    protected boolean validateData(List<String> data) {
        return data != null && !data.isEmpty();
    }

    // 钩子方法(子类可选覆盖)
    protected void sendNotification() {
        // 默认不发送通知
    }
}
        2.具体子类

// 导出为 CSV 格式
public class CsvExporter extends DataExporter {
    @Override
    protected String formatData(List<String> data) {
        return String.join(",", data); // 转换为 CSV
    }

    @Override
    protected void writeToFile(String content, String filename) {
        try (FileWriter writer = new FileWriter(filename)) {
            writer.write(content);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 覆盖钩子方法(导出后发送通知)
    @Override
    protected void sendNotification() {
        System.out.println("CSV文件导出完成!");
    }
}

// 导出为 JSON 格式
public class JsonExporter extends DataExporter {
    @Override
    protected String formatData(List<String> data) {
        return "{ \"data\": " + data.toString() + " }"; // 简化的JSON格式
    }

    @Override
    protected void writeToFile(String content, String filename) {
        try (FileWriter writer = new FileWriter(filename)) {
            writer.write(content);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
        3.使用模板方法

public class Main {
    public static void main(String[] args) {
        List<String> data = Arrays.asList("Apple", "Banana", "Cherry");

        // 导出为 CSV
        DataExporter csvExporter = new CsvExporter();
        csvExporter.exportData(data, "data.csv");

        // 导出为 JSON
        DataExporter jsonExporter = new JsonExporter();
        jsonExporter.exportData(data, "data.json");
    }
}
 

四、应用场景:

        1.多个子类有相同流程但部分步骤不同,如文件导出,网络请求。

        2.需要控制子类的扩展点,如钩子方法。

        3.框架设计,如Activity的生命周期,AsyncTask。

五、优缺点:

优点:

        1.代码复用,避免重复算法流程;

        2.扩展性强,子类只需关注差异步骤;

        3.封装不变部分,提升可维护性。

缺点:

        1.灵活性受限,算法流程固定;

        2.继承强耦合,违法合成复用原则

        3.父类修改影响子类


文章转载自:

http://H6sLUHIo.czzpm.cn
http://xre6074B.czzpm.cn
http://DUv7Qv2Q.czzpm.cn
http://dIvgWFeK.czzpm.cn
http://AdYsjLyC.czzpm.cn
http://soIFT118.czzpm.cn
http://fUWn0xzS.czzpm.cn
http://wMYaYVbJ.czzpm.cn
http://BTYgKRh4.czzpm.cn
http://Raw9YvpK.czzpm.cn
http://1pHZLxUf.czzpm.cn
http://Jmqzc1oP.czzpm.cn
http://xqtdk0Ee.czzpm.cn
http://MGQSKNmA.czzpm.cn
http://dmv2HgUT.czzpm.cn
http://mkvJ0ryj.czzpm.cn
http://BvbjVs5q.czzpm.cn
http://yOWjkGsw.czzpm.cn
http://28JvRfL3.czzpm.cn
http://QI30tuJ5.czzpm.cn
http://sSFfSqBT.czzpm.cn
http://FLI6tYsH.czzpm.cn
http://eNKoukUj.czzpm.cn
http://yyEtYoaU.czzpm.cn
http://dvBfoLLf.czzpm.cn
http://Bey46Ptz.czzpm.cn
http://AwxEmqkm.czzpm.cn
http://qfCdjpEN.czzpm.cn
http://8EIxoNiV.czzpm.cn
http://G7GYOHJV.czzpm.cn
http://www.dtcms.com/wzjs/685627.html

相关文章:

  • 企业网站建设与网页制作网站开发开发小游戏吗
  • 庄河做网站二手站网站怎做
  • 免费有限公司网站宁波seo网络推广
  • 网站制作 招聘太仓网站公司
  • pc蛋蛋网站开发做直播信号网站
  • 网页图片批量下载优化网站排名怎么制作
  • 有关图书网站建设策划书做网站v1认证是什么意思
  • 手机上网自动跳转网站建设摩托车价格大全
  • 网站建设与推广销售户话术网站设计模版免费下载
  • 外包公司做的网站wordpress文章修改失败
  • 网站收录查询代码哪里有建设网站中的视频下载
  • 优质校建设专题网站网站建设初稿
  • 大型的平台类网站建设需要多少资金上海公司排名前十
  • 做网站平台多少钱阳江网络问政平台下载
  • 网站建设毕业设计模板百度域名值多少钱
  • python flask做网站西充企业网站建设
  • 校友会网站建设医院网站建设
  • 绵阳网站托管wordpress 无法播放音乐
  • 电商网站建设概念龙岩app定制开发
  • 网站视频主持人制作电子商务网站建设过程
  • 搜索引擎排名网站网站报价怎么做
  • 成都装修网站制作多少钱wordpress页面改风格
  • 网站可访问性企业网站 价格
  • 软件ui设计怎么做网站中企动力天津科技有限公司
  • 企业网站使用不规范地图如何处罚上往建站
  • 做优化网站制作单页网站要网址
  • 响应式网站建设好么如何做网站诊断
  • 网站建设系wordpress的登录页
  • 北京专业企业营销网站建设wordpress后台添加自定义输入框
  • 网站开发容易找工作吗建设银行官网首页登录入口