设计模式
2022-06-05 16:52:07 0 举报
AI智能生成
设计模式
作者其他创作
大纲/内容
1、概述:一个类只负责一个职责
1、降低类的复杂度
2、提高类的可读性,可维护性
3、降低变更带来的风险
2、优点:
3、缺点:需要改动代码较多
1、单一职责原则
1、A如果implement 接口IA 则 IA中所有的方法应改为A必须的方法
2、接口隔原则
1、高层模块不应该依赖底层模块,二者都应该依赖其抽象类
2、抽象不应该依赖细节,细节应该依赖抽象
3、依赖倒转(倒置)的中心思想是面向接口变成
5、使用接口或者抽象类的目的是指定好规范,而不涉及任何具体的操作,把战线细节的任务交给他们的实现类去完成
4、依赖倒转原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多,以抽象为基础搭建的架构比以细节为基础的架构要稳定的多。在java中,抽象指的是接口或抽象类,细节就是具体的实现类。
特点:
1、底层模块尽量都要有抽象类或接口,或者两者都有,程序稳定性更好
2、变量的生命类型尽量是抽象类或接口,这样我们的变量引用和实际对象间,就存在一个缓冲层,利于程序扩展和优化
3、继承时遵循里氏替换原则
注意事项
3、依赖倒转原则
1988年,由麻省理工大学姓里的女士提出
子类中尽量不要重写父类的方法
1、基本简介
当子类需要重写父类的方法时,让父类和子类都继承更基础的父类
2、解决方法
4、里式替换原则
开闭原则是编程中最基本,最重要的设计原则。
一个软件实体如类,模块和函数应该对扩展开放,对修改关闭。用抽象构建框架,用实现扩展细节
当软件需求变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。
编程中遵循其它原则,以及使用设计模式的目的就是遵循开闭原则
1、基本介绍
1、通过抽象类实现
5、开闭原则 OCP
一个类应该对其它类保持最少的了解
类与类关系越密切耦合度越大
迪米特原则又叫最少知道原则,即一个类对自己依赖的类知道的越少越好
只与直接朋友进行通信
两个对象有耦合关系就是朋友关系,耦合的方式有很多,依赖,关联,组合
非直接朋友,比如类中方法内部的成员变量,要考虑是否要拿到对应类中取实现。
2、解决方案
核心是降低类之间的耦合
只是要求降低类之间的耦合,并没有要求完全没有依赖关系
3、小结:
6、迪米特法则 Demeter
尽量使用合成聚合的方式,而不是使用继承
7、合成复用原则
1、设计原则
采取一定的方法,保证整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得对象实例的方法
1、概述
1、Hibernate SessionFactory
2、示例
1、JDK中 Runtime
1、实例
1、饿汉式(静态常量)
2、饿汉式(静态代码块)
3、懒汉式(线程不安全)
4、懒汉式(线程安全,同步方法)
5、懒汉式(线程安全,同步代码块)
6、双重检查 推荐使用
7、静态内部类 推荐使用
8、枚举 推荐使用
3、分类
1) 单例模式保证了系统内存中该类只存在一个对象,节省了系统资源,对于一些需要频繁创建销毁的对象,使 用单例模式可以提高系统性能
2) 当想实例化一个单例类的时候,必须要记住使用相应的获取对象的方法,而不是使用new
3) 单例模式使用的场景:需要频繁的进行创建和销毁的对象、创建对象时耗时过多或耗费资源过多(即:重量级对象),但又经常用到的对象、工具类对象、频繁访问数据库或文件的对象(比如数据源、session 工厂等)
4、优点及需要注意事项
1、单例模式
1) 优点是比较好理解,简单易操作。2) 缺点是违反了设计模式的ocp原则,即对扩展开放,对修改关闭。即当我们给类增加新功能的时候,尽量不修改代码,或者尽可能少修改代码.3) 比如我们这时要新增加一个Pizza的种类(Pepper披萨),我们需要做如下修改.
1、不使用工厂模式优缺点
比如 需要订购不同类型的pizza,如果不采用工厂模式,则订购,制作,销售等涉及到不同pizza的场景都需要实现对应的代码,如果加一个种类的pizza修改很多地方,违反了opc原则即开关原则,引入工厂模式可以很好的适应该原则,减少代码的修改
2、实例
2、简单工厂模式
1、定义了一个创建对象的方法,由子类决定要实例化的类,工厂方法模式将对象的实例化推迟到子类
3、工厂方法模式
4、抽象工厂模式
2、工厂模式
3、原型模式
4、建造者模式
5、工厂模式
1、创建型模式
1、适配器模式
2、桥接模式
3、装饰模式
4、组合模式
5、外观模式
6、享元模式
7、代理模式
2、结构性模式
1、模板方法模式
2、命令模式
3、访问者模式
4、迭代器模式
5、观察者模式
6、中介者模式
7、备忘录模式
8、解释器模式
9、状态模式
10、策略模式
11、责任链模式
3、行为型模式
2、分类
1、用例图
1、用于描述类本身的组成和类之间的关系
1、依赖关系
2、泛化关系 (继承)
3、实现关系(类实现接口)
4、关联关系(类与类之间的关系)
5、聚合关系(可以缺少的属性)
6、组合关系(不可缺少的属性)
2、类之间的关系
1、类图
2、对象图
3、包图
4、组件图
5、部署图
2、静态结构图
1、交互图
2、状态图
3、活动图
3、动态行为图
3、UML
设计模式
0 条评论
回复 删除
下一页