设计模式和设计原则
23设计模式和七大原则
Mr.Hello
毕业于辽宁石油化工大学,计算机专业。先后从事研发工程师,研发组长后进入唱吧科技有限公司担任大数据工程师。现是辽宁沈阳东软集团股份有限公司一名项目负责人。学习的路上就是不断打破认知从而不断突破,任重而道远,希望有你陪伴。
展开
-
设计模式常见问题和总结
设计模式可以分为哪几类,分别有哪些设计模式?(10分)设计模式分为有创建型,结构型,和行为型。创建型:单例设计模式,工厂设计模式,抽象工厂模式,建造者模式,原型模式结构型:代理模式,组合模式,享元模式,适配器模式,桥接模式,门面模式,装饰器模式,行为型:委派模式,策略模式,模板方法模式,观察者模式,访问者模式,责任链模式,迭代器模式,中介模式2.设计模式有哪些设计原则?(10分)(1)单一职责,一个类只负责一项自己业务,不做其他类的改变操作(2)开闭原则,对修改关闭,对扩展开放(3)依赖.原创 2021-02-28 22:38:46 · 600 阅读 · 0 评论 -
设计模式之模板方法
模板模式,是流程化的一种方法模板,作用在于规范流程,能复用父类的共用方法,减少代码臃肿,可以通过内置钩子方法修改范式逻辑。如jdbc中的创建connection等都是用的模板方法.原创 2021-02-28 01:00:49 · 62 阅读 · 0 评论 -
设计模式之责任链模式
顾名思义,责任链路,其意思就是在执行整体方法的时候进行拆分不同元素和类来执行部分功能,当执行完无异常当前模块逻辑时则传导至下一个元素执行,直到整体逻辑全部执行完毕。优点是维护容易,对于部分功能的拆分和增加只需要在链路追加和删除即可,但弊端在于链路过长时会导致性能下降,并且某段链路出现循环异常时会导致系统崩塌。...原创 2021-02-28 00:42:39 · 140 阅读 · 0 评论 -
设计模式之策略模式
于订阅-发布,源监听,实现了一对多的依赖关系。指一个元素可以被多个观察者类和对象监听,一旦被观察者发生了改变那么其观察者会自行进行发生改变。原创 2021-02-28 00:39:50 · 73 阅读 · 0 评论 -
设计模式之桥接模式
独立分离了抽象接口和具体实现类,让两者独立扩展,从而又相互依存。主要构成:抽象(Abstraction),修正抽象(RefinedAbstraction) ,实现(Implementor),具体实现(Concreteimplementor),因为没有用多继承,选用组合,从而遵循了开闭原则和里氏替换原则和依赖倒置原则,是个非常不错的设计模式。缺点是逻辑过于抽象不易理解。...原创 2021-02-28 00:38:41 · 87 阅读 · 0 评论 -
设计模式之适配器模式
适配器模式主要针对接口不匹配导致无法一起工作的两个类能进行并存工作。适配器实现构成有:目标角色,源角色,适配器三者组成。实现方式有类适配器,对象适配器和接口适配器,三者前两者针对类本身和传入对象本身的兼容,第三者则更为兼容。拥有诸多兼容方法,不限定某一兼容方法,但会出现许多空的实现方法,代码略显臃肿。属于结构型设计模式。...原创 2021-02-28 00:34:36 · 66 阅读 · 0 评论 -
设计模式之组合模式
组合模式在于他的整体-分解。针对树形结构进行拆分整合。由根节点,树枝节点和叶子节点组合。每个个体可以组成成为父子关系,也可以独立存在。组合又分为透明组合模式和安全组合模式,透明组合模式是根节点定义的方法旗下节点都要实现接口,代表着子类和父类拥有者共同的方法,安全组合模式相反,只有部分公共方法需要实现,具体个体的实现都有树枝节点和叶子节点实现。...原创 2021-02-28 00:29:27 · 99 阅读 · 0 评论 -
设计模式之享元模式
享元模式就是共享对象池,在面临同一个数据反复创建对象时候可以使用享元模式,享元模式状态分为内部状态和外部状态两种,内部状态是不会发生改变,外部状态会根据周期发生改变。使用享元模式创建对象池从而达到减少对内存的消耗目的。属于结构型设计模式ba...原创 2021-02-27 20:50:41 · 88 阅读 · 0 评论 -
设计模式之装饰器模式
装饰器模式:指在不修改原有对象基础上,增加额外功能属性,提供了更有弹性的扩展功能。看起来虽然很像代理模式但两者层级不同,代理模式虽然也是增强但只是对业务本身增强,但装饰器模式是对类的本身进行一个增强。例如小明需要租房,代理就是中介帮忙处理,你只需要付钱即可,联系房东获取性价比最高的房源都由代理负责。而装饰者则更偏重对象本身的增强,相当于小明自己新增了一个寻找房源和联系房东的增强属性。属于结构性设计模式public abstract class BatterCake { public abstrac原创 2021-02-23 02:39:48 · 202 阅读 · 1 评论 -
设计模式之门面设计模式
门面模式:将所有执行的方法同意归纳到一个总类中执行,调用者不需要考虑其他业务实现只要调用总接口即可,最后再由总接口统一按照业务调用其他核心业务代码,提高了系统以来,松散耦合,遵循了最少知道原则。缺点是不符合开闭原则。属于结构性设计模式。public class Drugstore { //采购药品 public void purchaseMedicine(Medicine medicine){ if(medicine.getCount()<3){原创 2021-02-23 02:37:19 · 206 阅读 · 1 评论 -
设计模式之代理设计模式
不需要关心核心业务代码统统由代理类进行处理,并且对业务进行一个增强。常见spring的aop业务范围。其中包含静态代理和动态代理,静态代理需要手动传入被代理类和手动执行被代理的方法局限性较大。动态代理类可以自动调用被代理的类和被代理的方法,兼容性更强,动态代理中又分为jdk方式和cglib方式,两者区别在于调用方式不同,前者是通过实现某接口,统一代理接口下的实现方法,约束性更强。cglib是集成了被代理类并且重写了被代理类的方法,因cglib中生成的fastClass中的index可以直接定位方法位置,不需原创 2021-02-23 02:35:45 · 60 阅读 · 0 评论 -
设计模式之建造者设计模式
建造者设计模式功能上很像元素的set方法,他实现了链式编程,使得一个复杂对象的构建过程和他的表示分离,属于创建型设计模式。public class Student { Student student = new Student(); private String id; private String clazz; private String age; private String number; public Student appentId (Str原创 2021-02-23 02:22:14 · 145 阅读 · 0 评论 -
设计模式之原型模式
原型模式是指构建对象时候不需要考虑对象的构造函数和数据,从原有基础之上复刻出来一个新的对象并且保留原有的数据。具体原型模式又分为两种1.深克隆 2.潜克隆两者区别?浅克隆只复制基本数据类型,引用数据类型会指向同一个地址。深克隆更消耗性能,它需要通过序列化和反序列化将类重新写入到内存中实现所有数据都独立的效果。原型模式本身对单例模式有冲突,不能同时存在,因为两者是互斥的。public class CloneStudent implements Cloneable,Serializable {原创 2021-02-23 02:01:57 · 82 阅读 · 1 评论 -
设计模式之单例设计模式
单例设计模式单例设计模式主要有饿汉式,懒汉式,注册式,容器式几种。(1)饿汉式由于会在加载时候就存入到内存,会对内存浪费,不适合使用在一些批量所有类进行加载时候使用,例如spring加载所有工程项目类。如只有几个类的时候可以使用。(2) 懒汉式懒汉式相比饿汉式更节省资源内存,但如果不做任何控制会出现线程不安全。因为在判断单例一瞬间多个线程进入后会创建多次实例,出现问题。解决方案:<一>,加锁(syncronized),对创建方法时候进行加入syncronized进行阻塞,但弊原创 2021-02-21 22:48:07 · 107 阅读 · 0 评论 -
设计模式之工厂模式
工厂设计模式简单工厂工厂方法抽象工厂(1)简单工厂目的在于调用者不需要关心创建过程,全部交给工厂即可,如需要任何产品可以直接调用工厂进行生产.但弊端在于违背了单一职责,所有产品都由一个工厂进行创建。(2)工厂方法模式在简单工厂基础之上进行了一次升级和分类,再次创建产品时候可以根据不同的归类产品工厂进行创建,如之前造布厂需要生产娃子床单被罩,现在有了专门的娃子生产车间,床单生产车间和被罩生产车间。以及创建文档工厂,pdf的工厂专门创建自己的类型文档,word和excel同理。但是弊端会产生出原创 2021-02-21 22:34:28 · 194 阅读 · 1 评论 -
设计模式之七大软件设计原则
(1).开闭原则:对修改关闭,对扩展开放。相对于以往代码,在进行逻辑更改和变动时候需要对底层代码逻辑进行修改,当产品和项目进行长期迭代后这种频繁操作会对线上测试和版本稳定造成非常大的影响,故保持开闭原则会大大减少代码修改对其他系统造成的影响。(2)单一职责:每个接口和方法只做一件事,在代码逻辑中尽量保持每个类只做一件事情,避免出现批量的if else判断,每次追加都要修改代码,和开闭原则有点相互对应。但一味追求单一职责会导致代码的类过多,在设计当中应按需求和场景进行判断。(3)依赖倒置原则:,通过原创 2021-02-21 22:22:10 · 82 阅读 · 0 评论 -
架构师内功修为-设计模式之设计介绍
前言:内容定位-不用设计模式并非不可以,但是用好设计模式能帮助我们更好地解决实际问题,设计模式最重要的是解耦。设计模式天天都在用,但自己却无感知。我们把设计模式作为一个专题,主要是学习设计模式是如何总结经验的,把经验为自己所用。学设计模式也是锻炼将业务需求转换技术实现的一种非常有效的方式。为什么要从设计模式开始?1、写出优雅的代码2、更好地重构项目3、经典框架都在用设计模式解决问题设计模式有两种分类方法,即根据模式的目的来分和根据模式的作用的范围来分。根据目的来分根据模式是用来完成原创 2020-07-22 13:37:34 · 89 阅读 · 0 评论