• 2020-03-01


    庚子鼠年 戊寅月 癸卯日

    描述

    这个月开始学习设计模式....

    总结一下spring中的Template

    技术博客:https://blog.csdn.net/qq_40674583/article/details/104600560

    随笔

    设计模式常用的七大原则:

    1. 单一职责原则

      • 在方法上(方法很少,逻辑足够简单)或类上遵守单一职责原则都可以。

      • 可以降低类的复杂性

    2. 接口隔离原则

      • 客户端不应该依赖他不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。

      • 接口隔离原则和单一职责原则非常类似。单一职责原则要求接口的职责是单一的,而接口隔离原则要求接口尽量细化,它们有异曲同工之妙,都是要让我们的接口功能尽量单一,尽量小。

    3. 依赖倒转原则(DIP)

      • 高层模块不应该依赖低层模块,两者都应该依赖其抽象

      • 抽象不应该依赖细节,细节应该依赖抽象

    4. 里氏替换原则

      • 任何基类可以出现的地方,子类一定可以出现。
      • LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。
      • 在类中调用其他类时务必要使用父类或接口,如果不能使用父类或接口,则说明类的设计已经违背了LSP原则。
      • 1.子类必须完全实现父类的方法
        2.子类可以有自己的个性
        3.覆盖或实现父类的方法时输入参数可以被放大,覆写或实现父类的方法时输出结果可以被缩小
      • 任何基类可以出现的地方,子类一定可以出现。里氏替换原则是继承复用的基石,只有当衍生类可以替换基类,软件单位的功能不受到影响时,即基类随便怎么改动子类都不受此影响,那么基类才能真正被复用
    5. 开闭原则ocp

      • 软件实体应该对扩展开放,对修改关闭
      • 当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。
    6. 迪米特法则

      • 又叫作最少知识原则
      • 个软件实体应当尽可能少的与其他实体发生相互作用。每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。
      • 迪米特法则不希望类之间建立直接的联系。如果真的有需要建立联系,也希望能通过它的友元类来转达。
      • 它要求一个对象应该对其他对象有最少的了解
      • 迪米特法则还有一个英文解释是:talk only to your immediate friends(只和直接的朋友交流)。什么是朋友呢?每个对象都必然会与其他的对象有耦合关系,两个对象之间的耦合就会成为朋友关系。那么什么又是直接的朋友呢?我们称出现成员变量、方法参数、方法返回值中的类为直接的朋友。迪米特法则要求只和直接的朋友通信。
      • 对外除了提供的public方法,不对外泄漏任何信息。
    7. 合成复用原则

      • 软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现

    RedisTemplate中定义了5种数据结构操作

    redisTemplate.opsForValue();  //操作字符串
    redisTemplate.opsForHash();   //操作hash
    redisTemplate.opsForList();   //操作list
    redisTemplate.opsForSet();    //操作set
    redisTemplate.opsForZSet();   //操作有序set
    
    stringRedisTemplate.opsForValue().set("test", "100",60*10,TimeUnit.SECONDS);//向redis里存入数据和设置缓存时间  
    
    stringRedisTemplate.boundValueOps("test").increment(-1);//val做-1操作
    stringRedisTemplate.opsForValue().get("test")//根据key获取缓存中的val
    stringRedisTemplate.boundValueOps("test").increment(1);//val +1
    
    stringRedisTemplate.getExpire("test")//根据key获取过期时间
    stringRedisTemplate.getExpire("test",TimeUnit.SECONDS)//根据key获取过期时间并换算成指定单位
        
    stringRedisTemplate.delete("test");//根据key删除缓存
    stringRedisTemplate.hasKey("546545");//检查key是否存在,返回boolean值 
    stringRedisTemplate.opsForSet().add("red_123", "1","2","3");//向指定key中存放set集合
    
    stringRedisTemplate.expire("red_123",1000 , TimeUnit.MILLISECONDS);//设置过期时间
    stringRedisTemplate.opsForSet().isMember("red_123", "1")//根据key查看集合中是否存在指定数据
    stringRedisTemplate.opsForSet().members("red_123");//根据key获取set集合
    
  • 相关阅读:
    再见了亲爱的学生们,再见了敬爱的同事们,再见了信狮
    #if defined 和#ifdef的区别
    C# ASP.NET Core开发学生信息管理系统(二)
    modelsim与debussy联合的问题
    C#批量生成大数据量无重复随机数据的另类高效实现
    DataColumn.Caption属性应用到DataGridView.HeaderText的方法
    [转载]安装网银安全控件
    近期学习SQL Server,收藏的几个学习教程网址备忘
    asp.net根据域名查ip C#版
    asp.net 2.0教程 成员资格和角色管理
  • 原文地址:https://www.cnblogs.com/chang1024/p/12392853.html
Copyright © 2020-2023  润新知