设计模式
1、说下你知道的设计模式有哪些?下面 3 种类型中各挑几个常见的或者你用过的说就可以了。2、工厂方法模式和抽象工厂模式有什么区别?工厂方法模式:一个抽象产品类,可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。每个具体工厂类只能创建一个具体产品类的实...
2024-01-10设计模式简介
设计模式简介设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是一套被反复使用的、多...
2024-01-10设计模式总结
经过了两个多月的时间,终于,将常见的设计模式结合例子过了一遍,在此做一个简单的小结。设计模式小结不难发现,应用各种设计模式所带来的好处,都会提到解耦二字。开闭原则要求我们的系统对扩展开放,对修改关闭。高内聚,低耦合的系统,有更高的稳定性与灵活性,也更易于维护。如何...
2024-01-10CSS设计模式
什么是设计模式?曾有人调侃,设计模式是工程师用于跟别人显摆的,显得高大上;也曾有人这么说,不是设计模式没用,是你还没有到能懂它,会用它的时候。先来看一下比较官方的解释:“设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。使...
2024-01-10设计模式命令模式
设计模式-命令模式定义命令模式是一个高内聚的模式,其定义为:将一个请求封装成一个对象,从而让你使用不同的请求(Command)把客户端参数化,并对请求排队或者记录请求日志,可以提供命令的撤销或恢复功能。从定义上有点难理解这个意图,个人觉得这个可以分两块来解读这个模式第一点:...
2024-01-10承诺重试设计模式
继续重试直到承诺解决的模式(带有delay和maxRetries)。 在结果满足条件之前一直重试的模式(带有delay和maxRetries)。具有无限重试次数(提供延迟)的高效内存动态模式。 继续重试,直到承诺解决为止(该语言是否有任何改进社区?)Promise.retry = function(fn, times, delay) { return new Promise(function(resol...
2024-01-10设计模式状态模式
模式结构上下文(context):状态运行的环境抽象状态(State)角色:对状态类型的抽象具体状态(Concrete State)角色:状态类型的实现源码导读在复杂的业务场景中,我们一般使用状态机来实现状态的切换。状态机便是基于状态模式的思想设计。下面我们介绍spring组件中的状态机组件 spring statemach...
2024-01-10设计模式策略模式
抽象折扣类:public interface MemberStrategy { /** * 计算图书的价格 * @param booksPrice 图书的原价 * @return 计算出打折后的价格 */ public double calcPrice(double booksPrice);} 三个实现类:(初级会员、中级会员、高级会员) public class PrimaryMemberStrategy implements MemberStra...
2024-01-10设计模式迭代器模式
无须暴露聚合对象的内部表示遍历任务交由迭代器完成,简化聚合类遍历的方式可扩展模式结构迭代器模式主要包含以下角色。抽象聚合(Aggregate)角色:定义存储、添加、删除聚合对象以及创建迭代器对象的接口。具体聚合(ConcreteAggregate)角色:实现抽象聚合类,返回一个具体迭代器的实例...
2024-01-10管道设计模式的实现
这是关于管道实施的设计问题。以下是我的幼稚实现。管道中各个步骤/阶段的接口:public interface Step<T, U> { public U execute(T input);}管道中的步骤/阶段的具体实现:public class StepOne implements Step<Integer, Integer> { @Override public Integer execute(Integer input) { return input + 100; ...
2024-01-10设计模式学习代理模式
代理模式主要分为三种,静态代理、动态代理、Cglib代理一、静态代理静态代理的条件是目标类与代理类必须实现同一个接口然后通过调用相同的函数完成对目标函数的调用 ,业务操作由目标类实现,非业务操作由代理类实现1.接口public interface Test { void test();}2.目标类public class TestImpl implements T...
2024-01-10设计模式系列原型模式
适用场景:1、类初始化消耗资源较多2、new 产生的一个对象需要非常繁琐的过程(数据准备、访问权限等)3、构造函数比较复杂原型模式创建方式分为两种:浅克隆 ,深克隆实现方式1、浅克隆克隆出的新对象的引用属性内存地址还是指向原实例属性地址。即新对象与原对象引用属性共用同一内...
2024-01-10设计模式行为型策略模式
一、策略模式基本介绍策略模式(Strategy Pattern)中,定义算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户;这算法体现了几个设计原则。第一、把变化的代码从不变的代码中分离出来;第二、针对接口编程,而不是具体类(定义策略接口);第三、多...
2024-01-10设计模式(5)原型模式
原型模式原型模式的适用场景浅拷贝深拷贝用Initialize方法修改初始化状态原型模式与之前学习的各种工厂方法、单例模式、建造者模式最大、最直观的区别在于,它是从一个既有的对象“克隆”出新的对象,而不是从无到有创建一个全新的对象。与对文件的拷贝类似,原型模式是基于现有的对象...
2024-01-10设计模式创建型原型模式
一、基本概念原型模式:用原型模式实例制定创建对象的种类,并通过拷贝这些原型,创建新的对象;原型模式是一种创建型设计模式,允许一个对象再创建另一个可制定的对象,无需知道如何创建的细节;通过将一个原型对象传给那个要发动创建的对象这个发动创建对象,这个要发动创建...
2024-01-10设计模式行为型状态模式
一、状态模式基本介绍状态模式:它主要用在对象在多个状态转换时,需要对外输出不同的行为的问题。状态和行为之间时一一对应的,可以互相转换;当一个对象的内在状态改变时,允许改变其行为,这个对象看上去是改变其类。二、状态模式各组成部分Context类:环境角色,用于维护当前实例...
2024-01-10设计模式行为型命令模式
一、命令模式简单介绍命令模式(command Pattern),在软件蛇魔过程中,我们经常需要向某些对象发送请求,但是不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需要在程序运行时,制定具体的请求接收者即可,此时,可以使用命令模式进行设计;命令模式使得请求发送者和请求接收...
2024-01-10设计模式结构型组合模式
一、组合模式基本介绍组合模式(Composite Pattern),又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构,以表示“整体部分”的关系。组合模式依据树形结构来组合对象,用来表示部分以及整体层次;这种设计模式属于结构性模式;组合模式使得用户对单个对象和组合对象的...
2024-01-10设计模式结构型享元模式
一、享元模式基本介绍享元(Flyweight)模式也叫做蝇量模式,运用共享技术有效地支持大量细粒度的对象;常用于系统底层开发,解决系统性能问题,像数据库连接池,里面都有创建好的连接对象,在这些对象中,有我们需要的就直接拿来用,避开重新创建,如果没有我们需要的,则创建一个;享...
2024-01-10设计模式(8)组合模式
组合模式透明模式与安全模式对组合的筛选遍历无论是在生活中还是项目中,我们经常会遇到具有“部分-整体”概念的对象,比如员工与团队的关系,这就类似树形结构,可能具有很多的嵌套层次和分支,把这种复杂性直接暴露给调用端是不合适的。组合模式借助组合模式,可以将这类具有“部...
2024-01-10设计模式(11)享元模式
基于面向对象思想设计的应用程序有时遇到需要场景大量相同或显示对象实例的场景,这些数量庞大的实例很可能会消耗很多系统资源,最直接的就是内存了。比如要一款围棋游戏,如果每次落子都新建一个对象,将会占用大量内存,而实际上棋子只有黑白两色,不同的只是落子位置而已。另外,大量...
2024-01-10设计模式创建型创建者模式
一、创建者模式的四个角色Product(产品):一个具体的产品对象;Builder(抽象创建者):创建一个Product对象的各个部件的制定接口/抽象类;ConcreteBuilder(具体创建者):实现接口,构建和装配各个部件;Director(指挥者):构建一个使用Builder接口的对象,他主要用于构建一个复杂的对象,它主要...
2024-01-10设计模式行为型职责链模式
一、职责链模式基本介绍职责链模式(Chain of Responsiblity Pattern),又叫责任链模式,为请求创建了一个请求者对象的链。这种模式将请求的发送者和接收者解耦。职责链模式通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,以此...
2024-01-10设计模式设计模式7大原则
一、单一职责原则编码时,无论是方法上,还是类上都应该遵守单一职责原则。注意事项和细节:降低类的复杂度,一个类只负责一项职责;提高类的可读性,可维护性;降低变更引起风险;通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原...
2024-01-10设计模式一一一模板方法模式
jdk中的模板方法模式: /* * 模板类HttpServlet */ public abstract class HttpServlet extends GenericServlet implements java.io.Serializable { /* * 模板方法service(),制定逻辑的骨架。逻辑的骨架由多个基本方法构成。基本方法的具体实现由子类来完成。 */ ...
2024-01-10