zoukankan      html  css  js  c++  java
  • Spring设计模式_策略模式/其他


    策略模式特性

      1.执行最终结果一样

      2.执行过程和执行逻辑不一样

      3.使用同一接口  

    达到目的就可以了

    Git地址 

    https://github.com/wujiachengSH/WjcStrategy

    策略模式比较简单,直接看代码

    1.首先来个接口

    1 package com.wjc.Strategy;
    2 
    3 import java.util.Date;
    4 
    5 public interface DateUtil {
    6 
    7     String getDate(Date date);
    8     
    9 }

    2.随便来2个实现类

     1 package com.wjc.Strategy;
     2 
     3 import java.text.SimpleDateFormat;
     4 import java.util.Date;
     5 
     6 public class YMDUtil implements DateUtil {
     7 
     8     @Override
     9     public String getDate(Date date) {
    10         SimpleDateFormat sdfd =new SimpleDateFormat("yyy-MM-dd");
    11         return sdfd.format(date);
    12     }
    13 
    14 }
     1 package com.wjc.Strategy;
     2 
     3 import java.text.SimpleDateFormat;
     4 import java.util.Date;
     5 
     6 public class YMUtil implements DateUtil {
     7 
     8     @Override
     9     public String getDate(Date date) {
    10         SimpleDateFormat sdfd =new SimpleDateFormat("yyy-MM");
    11         return sdfd.format(date);
    12     }
    13 
    14     
    15 }

    3.来个封装

     1 package com.wjc.Strategy;
     2 
     3 import java.util.Date;
     4 
     5 public class DateChange {
     6 
     7     private DateUtil dateUtil;
     8     
     9     public DateChange(DateUtil dateUtil) {
    10         this.dateUtil = dateUtil;
    11     }
    12     
    13     public String getDate(Date date) {
    14         return dateUtil.getDate(date);
    15     }
    16     
    17 }

    4.测试一下

     1 package com.wjc.Strategy;
     2 
     3 import java.util.Date;
     4 
     5 public class Test {
     6 
     7     public static void main(String[] args) {
     8         
     9         Date date = new Date();
    10         date.getTime();
    11         
    12         DateChange dateChange = new DateChange(new YMDUtil());
    13         System.out.println("YMD : " + dateChange.getDate(date));
    14         
    15         DateChange dateChange2 = new DateChange(new YMUtil());
    16         System.out.println("YM : " + dateChange2.getDate(date));
    17     }
    18     
    19 }

    Spring里只要的还有单例,委派,原型和模版模式,鉴于 发现菜鸟教程中相关说明非常完善,觉得暂停设计模式章节,开始源码分析

    http://www.runoob.com/design-pattern/template-pattern.html  菜鸟地址,唉,大佬就是大佬,总结的比我好,比我完善的多

    单例模式特性

      1.保证系统从启动到终止,只会产生一个实例

      2.当我们在应用中遇到功能性冲突的时候,需要使用单例模式

    委派模式

      1.两个参与角色:委托人和被委托人

      2.委托人和被委托人在权利上是完全平等的(同一接口)

      3.委托人持有被委托人的引用

      4.不关心过程,只关心结果

      干活是你的(普通员工),功劳是我的(项目经理)

    原型模式

      1.首先有一个原型

      2.数据内容相同,但对象实例不同(完全不同的内存地址)

    模版模式

      1.执行流程固定,但中间步骤有细微差别

      2.可实现批量生产

  • 相关阅读:
    web架构
    网站开发的学习交流 系统架构 负载均衡
    数据库连接
    OpenCV4【12】边缘检测
    python基础_格式化输出(%用法和format用法)
    Python之telnetlib模块
    根据文字或图片来生成用于Banner输出的字符画
    Python3 range() 函数用法
    Python psutil cpu_percent调用说明
    @staticmethod和@classmethod的用法
  • 原文地址:https://www.cnblogs.com/wujc/p/10590065.html
Copyright © 2011-2022 走看看