开发思想

解决的问题:一类对象,不同对象有不同的处理

顶级接口

  • 定义规范,面向接口编程

抽象策略

  • 定义一套模板,不同的交给不同的策略实现

具体策略

  • 枚举 对象标识 –具体策略
  • 策略集合-对象标识

解决的问题:当一个对象状态发生改变时,所有依赖他的对象将得到通知并自动更新

常见场景:

  • spring事件
  • 消息队列
  • 我们不用去关心依赖的对象,只用把自己的事情做好

实现:

  • 充分解耦
  • 可实现一对一和广播

顶级事件接口

具体事件

顶级订阅者接口

具体订阅者

事件发布中心

解决的问题:当一个参数在需要四处传递,可设置上下文,从上下文中取

实现:

  • spring提供了一系列获取容器对象的接口ApplicationContextAware….

上下文顶级接口,定义规范

具体上下文

  • 保证全局唯一
  • 并非容器

  • 复用线程,减少系统资源的消耗

  • 便于管理线程
  • 快速的响应

合理的线程池:根据不同场景,情况去构建合适的线程池,保证效率和资源消耗

CAS锁控制控制线程池唯一,只有一个线程能够进行调度(提交任务)

private AtomicBoolean started = new AtomicBoolean(false);​private AtomicBoolean scheduler = new AtomicBoolean(false);

自定义阻塞队列,存放任务

单个线程循环处理,allowCoreThreadTimeOut回收线程节约资源

this.executor.allowCoreThreadTimeOut(true);​​try {            ProcessDefinition definition;            while ((definition = queue.poll()) != null) {                handler(definition);            }        } catch (Exception e) {            e.printStackTrace();        } finally {            scheduler.compareAndSet(true, false);            if (!queue.isEmpty()) {                scheduler();            }        }

并不是绝对的,灵活变通

  • 构建合理的类结构,便于扩展,理解
  • 提取公共方法实现复用

一个类只做一个事情,可通过依赖建立联系

优点:职责分明,结构清晰,便于修改

实现不改变这个类的情况下进行扩展

实现:策略模式

通过继承来进行扩展

面向接口编程

多用组合代替继承

  • 一般来说,如果两个类之间是”Has-A”关系,则使用组合/聚合;如果是”Is-A”关系,则使用继承。

中间类

接口隔离原则和单一职责都是为了提高类的内聚性、降低它们之间的耦合性,体现了封装的思想,但两者是不同的:

  • 单一职责原则注重的是职责,而接口隔离原则注重的是对接口依赖的隔离。
  • 单一职责原则主要是约束类,它针对的是程序中的实现和细节;接口隔离原则主要约束接口,主要针对抽象和程序整体框架的构建。

接口拆分

Original: https://www.cnblogs.com/lcjtt/p/16610462.html
Author: ZWLD
Title: 开发思想

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/610552/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【Java分享客栈】未来迈向高级工程师绕不过的技能:JMeter压测

    前言 因为工作需要,久违的从自己的有道云笔记中去寻找压测相关的内容,翻开之后发现还不错,温故一遍后顺便整理出来分享给大家。 题外话,工作8年多,有道云笔记不知不觉都6G多了,扫一眼…

    Java 2023年6月9日
    094
  • 一元函数积分学的概念与计算

    一元函数积分学的概念与计算 定积分:黎曼积分(\int_a^bf(x)=\sum),曲边梯形面积和的极限 不定积分:(F'(x)=f(x)) 变限积分:(F(x)=\int_a^x…

    Java 2023年6月7日
    066
  • Java SE Development Kit (JDK) v14.0 x64

    甲骨文Java Development Kit(JDK)是整个Java的核心,包括了Java运行环境、Java开发工具包和Java基础类库源代码。JDK作为JAVA开发环境,是运行…

    Java 2023年5月29日
    070
  • Spring核心原理之 IoC容器中那些鲜为人知的细节(3)

    本文节选自《Spring 5核心原理》 Spring IoC容器还有一些高级特性,如使用lazy-init属性对Bean预初始化、使用FactoryBean产生或者修饰Bean对象…

    Java 2023年6月7日
    083
  • 如何等待ajax完成再执行相应操作

    ajax广泛应用于异步请求,对于大多数业务来说,这是十分方便的,但对于一些特殊的业务,ajax的异步性会起到相反的作用。 例如在ajax请求成功后,后续的操作需要依赖ajax执行成…

    Java 2023年6月6日
    083
  • listener@Autowired无法注入bean的一种解决方法

    public class FileListener extends FileAlterationListenerAdaptor { @Autowired private WebSo…

    Java 2023年6月6日
    079
  • Java中对象池的本质是什么?(实战分析版)

    对象池顾名思义就是存放对象的池,与我们常听到的线程池、数据库连接池、http连接池等一样,都是典型的池化设计思想。 对象池的优点就是可以集中管理池中对象,减少频繁创建和销毁长期使用…

    Java 2023年5月29日
    098
  • Session Cookie Token Json-Web-Token

    什么是认证(Authentication) 通俗地讲就是 验证当前用户的身份,证明”你是你自己”(比如:你每天上下班打卡,都需要通过指纹打卡,当你的指纹和系…

    Java 2023年6月7日
    083
  • Redis变慢?深入浅出Redis性能诊断系列文章(三)

    (本文首发于”数据库架构师”公号,订阅”数据库架构师”公号,一起学习数据库技术,助力职业发展) 本篇为Redis性能问题诊断系列的第…

    Java 2023年6月16日
    0103
  • 接口

    JDK1.8之前 package com.gao.test.Test7; /* 1.类是类,接口是接口,他们是同一层次的概念。 2.接口中没有构造器 3.接口如何声明:interf…

    Java 2023年6月5日
    098
  • android 编译错误

    A problem occurred configuring root projectCould not resolve all artifacts for configurati…

    Java 2023年6月7日
    0145
  • CompletableFuture的简单使用

    日常开发中,我们都会用到线程池,一般会用execute()和submit()方法提交任务。但是当你用过CompletableFuture之后,就会发现以前的线程池处理任务有多难用,…

    Java 2023年6月6日
    069
  • Java基础语法01——变量与运算符

    Java基础语法01——变量与运算符 本文是对Java基础语法的第一部分的学习,包括注释;标识符的命名规则与规范;变量的数据类型分类以及转换;以及六种运算符(算术、赋值、比较、逻辑…

    Java 2023年6月5日
    080
  • <5>Linux-静态库和动态库

    1 库及库的分类 库本质:是二进制形式的目标代码(.o) 库的作用? † 库的分类:静态库和动态库(共享库)。 静态库和动态库的区别 如果程序是在编译时加载库文件的,就是使用了静态…

    Java 2023年6月15日
    064
  • SpringMvc里的RequestBodyAdviceAdapter使用问题

    看了下源码,好像默认它转换的时候就截断了。 看了下源码,RequestBodyAdviceAdapter 这个静态类除了 beforeBodyRead 这个方法外,还有个 afte…

    Java 2023年5月30日
    067
  • Java 汉字拼音引擎

    // TODO posted @2022-06-21 00:04 龙凌云端 阅读(16 ) 评论() 编辑 Original: https://www.cnblogs.com/mi…

    Java 2023年5月29日
    088
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球