设计模式(java源码实现)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
星期八 6f3bd350f7 修复问题 4 years ago
pattern-abstractFactory 删除无用类 4 years ago
pattern-adapter 修复问题 4 years ago
pattern-bridge 删除无用类 4 years ago
pattern-builder 修复equals 4 years ago
pattern-command 新增注解 4 years ago
pattern-composite 删除无用类 4 years ago
pattern-decorator 删除无用类 4 years ago
pattern-facade 新增注解 4 years ago
pattern-factory 修复问题 4 years ago
pattern-flyweight 修改注释 4 years ago
pattern-interpreter 修复equals 4 years ago
pattern-iterator 修复问题 4 years ago
pattern-mediator 修复问题 4 years ago
pattern-memento 删除无用类 4 years ago
pattern-observer 删除无用类 4 years ago
pattern-prototype 删除无用类 4 years ago
pattern-proxy 删除无用类 4 years ago
pattern-responsibility 删除无用类 4 years ago
pattern-singleton 删除文件 pattern-singleton/pattern-singleton.iml 5 years ago
pattern-state 删除无用类 4 years ago
pattern-strategy 删除无用类 4 years ago
pattern-template 修复问题 4 years ago
pattern-visitor 删除无用类 4 years ago
src 项目初始化 5 years ago
.gitignore 提交版本忽略文件 5 years ago
LICENSE Initial commit 5 years ago
README.en.md Initial commit 5 years ago
README.md 修改说明文件 5 years ago
pom.xml 项目初始化 5 years ago

README.md

pattern

pattern 介绍

23种设计模式(java源码实现) 来源于:《图解设计模式》

pattern 安装教程

  1. jdk8
  2. maven3

设计模式6个原则

摘抄博客:https://www.cnblogs.com/xiaobaizhang/p/7778494.html

1. 单一职能
     
     不要存在多于一个导致类变更的原因即一个类只负责一项职责
     
     优点
     
     1可以降低类的复杂度一个类只负责一项职责其逻辑一定比负责多项职责简单
     
     2提高类的可读性提交系统的可维护性
     
     3变更引起的风险降低变更是必然的如果单一职能原则遵循的好修改功能是可以显著的降低对其他功能的影响
   
   体现程序模块化  

2. 里氏替换

    子类可以实现父类的抽象功能尽量不要改变父类的已经实现功能
     
     含义
     
    1子类可以实现父类的抽象方法但不能重写父类非抽象方法
    
    2子类可以增加自己特有的方法
     
    3当子类的方法重载父类的方法时方法的前置条件要方法参数比父类方法的输入参数宽松
    
    4当子类的方法实现父类的抽象方式时方法的后置条件方法的返回值要比父类更严格
    
3. 依赖倒置
    
    高层模块不应该依赖底层模块二者都应该依赖其抽象抽象不应该依赖细节实现类);细节应该依赖抽象
    
    措施
    
    1底层模块尽量要有抽象类或者接口或者两者都有
    
    2变量的声明类型尽量是接口或者抽象类
    
    3使用继承遵循里氏替换原则
     
     依赖倒置核心面向接口编程或者面向抽象编程

4. 接口隔离
    
    客户端不应该依赖它不需要的几口;一个类对另外一个类的依赖应该建立在最小接口上
    
    解决方案将臃肿的接口拆分成几个独立的接口.
    
    注意细节
    
    1接口尽量小但要有限度.对接口细化可以提高程序的灵活性但是过度拆分会导致程序复杂度上升接口增多
    
    2为依赖接口的类定制服务只暴露调用的类需要的方法它不需要的方法则隐藏只有专注地为一个模块提供定制化服务才能建立最小依赖关系
    
    3提高内聚减少对外交互.使接口用最小的方法去完成最多的方法. 

5. 迪米特最少知道原则

    一个对象应该对其他对象保持最少的了解
    
    问题由来类与类之间的关系越来越密切耦合度越大当一个类发生改变对另外一个类的影响也越大
    
    解决方案尽量降低类与类之间的耦合度高内聚低耦合
    
6. 开闭原则

   一个软件实体如类 模块和函数都应该对扩张开放对修改关闭.
   
   问题由来在软件的生命周期内因为变化 升级和维护等原因对原来代码进行修改可能会为旧代码引入错误也可能会使我们不得不重构并且需要对原有的代码经过重新测试
   
   解决方案当软件需要变化时尽量通过扩张软件的实体的行为来实现变化而不是通过修改原有的代码
   
   用抽象构建框架用实现扩展细节
   
总结单一职责告诉我们类的功能尽量单一;里氏替换告诉我们不要破坏继承体系;依赖倒置告诉我们要面向接口编程;接口隔离告诉我们设计接口的时候要精简单一;
     迪米特告诉告诉我们要降低耦合开闭原则是总纲告诉我们要对修改关闭对扩张开放



设计模式模型

  1. 创建型:单例模式(singleton),工厂模式(Factory), 抽象工厂模型(abstractFactory),原型模式(prototype), 建造者模式(builder)

  2. 结构型: 代理模式(proxy), 装饰者模式(decorator) ,适配器模式(adapter), 外观模式(facade) , 容器模式(composite) ,享元模式(flyweight),桥梁模式(bridge)

  3. 行为型:策略模式(strategy),责任链模式(responsibility),命令模式(common),仲裁者模式(mediator),模板方法模式(template),迭代器模式(iterator),访问者模式(visitor),观察者模式(observer),解析器模式(interpreter),备忘录模式(memento),状态模式(state)