12 2023 档案

摘要:建模算法能力,数据分析能力,软件工程能力,系统架构能力,项目管理能力,产品视角能力 阅读全文
posted @ 2023-12-20 09:19 求简君 阅读(2) 评论(0) 推荐(0) 编辑
摘要:数据结构有:1.数组;2.栈;3.队列;4.链表(单链表、双向链表、循环链表);5.数;6.散列表;7.堆;8.图。 一、数组 内存连续,可通过元素下标访问。 二、栈 先进后出 三、队列 先进先出 四、链表 物理存储不连续,因为存储了相邻元素的物理地址,所以逻辑上连续。 五、树 每个节点有零个或多个 阅读全文
posted @ 2023-12-19 13:24 求简君 阅读(12) 评论(0) 推荐(0) 编辑
摘要:目的:使程序高内聚、低耦合、高重用、高灵活,可维护性好,可扩展性高。 设计模式的三种类型: 创建型:单例、工厂、抽象工厂、原型、建造者 结构型:适配器、桥接、装饰、组合、外观、享元、代理 行为型:模板法、命令、访问者、迭代器、观察者、中介者、备忘录、解释器、状态、策略、责任链 七大原则: 一、单一职 阅读全文
posted @ 2023-12-19 09:28 求简君 阅读(8) 评论(0) 推荐(0) 编辑
摘要:访问者模式的关键在于访问二字,在学习迭代器模式的时候,遍历就是访问的一般形式。 访问者模式的意图在于:将数据结构与作用于结构上的操作进行解耦,使你可以在不改变各元素类的前提下定义作用于这些元素的新操作(方式:增加一个新的具体访问者就好了)。 访问者模式有两个角色,一个是被访问者,一个是访问者,在被访 阅读全文
posted @ 2023-12-18 17:31 求简君 阅读(8) 评论(0) 推荐(0) 编辑
摘要:责任链模式为请求创建一个接收该 请求对象的 链 , 链条中每个元素都是一个对象 。 责任链模式有两个角色,一个是请求,一个是处理者构成的责任链,当前处理者无法处理请求时,将请求交给下一个责任者。 使用场景如OA 中审批流程 , 需要 组长 , 经理 , 总监 审批请求 ,账号注册时进行校验 , 先后 阅读全文
posted @ 2023-12-18 14:43 求简君 阅读(5) 评论(0) 推荐(0) 编辑
摘要:状态模式,它允许对象在内部状态发生改变时改变它的行为,简单地讲就是,一个拥有状态的context对象,在不同状态下,其行为会发生改变。 状态模式有两个角色,一个是主类,即上下文类(context),一个是状态类。主类里有状态类对象,把不同的状态下的不同行为,由不同的状态类对象来执行,主类来进行切换状 阅读全文
posted @ 2023-12-18 13:50 求简君 阅读(11) 评论(0) 推荐(0) 编辑
摘要:解释器模式就像是一种自定义语言,我们可以定义该语言的语法规则,然后从中解析出具体的命令或表达式,最终执行相应的操作。 类似我们使用的编程语言,区别是有的先编译再执行(C#,JAVA),有的是边解释边执行(Javascript、Python)。 解释器分两个角色,一是表达式,二是上下文,表达式又分为终 阅读全文
posted @ 2023-12-18 11:30 求简君 阅读(7) 评论(0) 推荐(0) 编辑
摘要:备忘录模式,也叫快照模式,它可以在不破坏封装性的前提下捕获一个对象的内部状态,并在对象之外保存这个状态,以便在需要的时候恢复到原先保存的状态。 常见的场景比如游戏进度日志,VMWare操作系统快照等,以备后续的恢复。 备忘录模式有三个角色,一是源发器,二是对源发器状态进行记录的备忘录,三是备忘录的管 阅读全文
posted @ 2023-12-18 10:25 求简君 阅读(10) 评论(0) 推荐(0) 编辑
摘要:仲裁者模式和中介者模式类似,但作用又有不同之处,仲裁者模式是对多个对象的管理协调,而中介者一般是一代一。 仲裁者有两个角色,仲裁者和被仲裁者,使用场景比如winform模式,form就是仲裁者,各种控件就是被仲裁者,仲裁者负责协调管理。 代码示例 package designMode.mediato 阅读全文
posted @ 2023-12-18 09:37 求简君 阅读(10) 评论(0) 推荐(0) 编辑
摘要:观察者模式通常由两个对象组成:观察者和被观察者。当被观察者状态发生改变时,它会通知所有的观察者对象,使他们能够及时做出响应,所以也被称作“发布-订阅模式”。 示例代码 /** * @author Created by njy on 2023/6/1 * 报纸接口,即被观察者接口 */public i 阅读全文
posted @ 2023-12-15 18:07 求简君 阅读(3) 评论(0) 推荐(0) 编辑
摘要:迭代器提供了一种统一的方式来访问集合对象中的元素,而不是暴露集合内部的表示方式。简单地说,就是将遍历集合的责任封装到一个单独的对象中,我们可以按照特定的方式访问集合中的元素。 迭代器模式有两个角色,一个是迭代器,一个是聚合器,Java或则c#中的Collection,List,Set,Map就是聚合 阅读全文
posted @ 2023-12-15 17:57 求简君 阅读(3) 评论(0) 推荐(0) 编辑
摘要:我们可以看到设计模式大多数是把简单的问题给搞复杂了,但是这种复杂恰恰是为了以后设计和扩展的简单。正如没有规划的盖一座房子,很快就盖成了一座房子,可是因为没有考虑到房子的方位、地基、以后的扩展、居住的舒适,改出来的房子最后不能进行扩展并且不符合力学的美感和力感,最终只能重新拆掉重建,所以学习设计模式的 阅读全文
posted @ 2023-12-15 17:37 求简君 阅读(5) 评论(0) 推荐(0) 编辑
摘要:命令模式,请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 命令模式有三个角色,一个命令,二是命令接收者,三是命令调用者。 像http请求,数据库sql命令都是常见的命令模式。 命令模式的意图是将一个请求封装成一个对象, 阅读全文
posted @ 2023-12-15 17:26 求简君 阅读(8) 评论(0) 推荐(0) 编辑
摘要:模板方法模式是指定义一个操作中算法的骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下即可重定义该算法的某些特定步骤。 模板方法主要有两个角色,一个抽象类模板,定义好骨架,第二是实现的子类,实现抽象类模板的抽象方法,和根据需要重写一些方法,其实这也是我们常用的继承,在这里最好 阅读全文
posted @ 2023-12-15 17:00 求简君 阅读(17) 评论(0) 推荐(0) 编辑
摘要:策略模式有两个主要角色,一个是主类,一个是策略类,通过主类的构造函数将策略类注入到主类,从而实现调用不同的策略。 典型的例子就是收银策略,正常收费,八折、五折,满200减50等等。 示例代码 package designMode.strategy; public class CashContext 阅读全文
posted @ 2023-12-15 16:40 求简君 阅读(11) 评论(0) 推荐(0) 编辑
摘要:享元模式,关键在一个享字上。为什么要进行共享,主要有两种原因,一种是有些对象创建时消耗资源比较大,当频次很高时,系统的性能受到显著影响,第二种是创建对象太多,内存占用过大,且这些对象并不是一直都在用。 典型的应用场景是数据库连接池。该模式主要涉及两个角色,一个是享元角色(Flyweight),一个是 阅读全文
posted @ 2023-12-14 17:20 求简君 阅读(6) 评论(0) 推荐(0) 编辑
摘要:外观模式,就有有一个外观类(Facade),其方法里是对多个子系统(或者其他类的对象)的操作的汇总包装,结果是外部不知道Facade具体做了哪些操作,形成比较好的隔离。 外观模式契合的是迪米特法则原子,即最少知道原则。 主要角色就是一个外观类。 示例代码: package designMode.fa 阅读全文
posted @ 2023-12-14 16:34 求简君 阅读(2) 评论(0) 推荐(0) 编辑
摘要:组合模式是树形结构的管理,例如组织结构,文件系统等。 组合模式有三个角色,一个是抽象构件,一个是容器构件,一个是叶子构件,容器构件和叶子构件的区别就是容器构件可以添加删除子容器或者叶子,叶子构件没有此功能。 组合模式分为透明组合模式和安全组合模式,其区别是透明模式会把增加或者删除子节点的方法抽象到抽 阅读全文
posted @ 2023-12-14 16:07 求简君 阅读(19) 评论(0) 推荐(0) 编辑
摘要:适配器模式分为类适配器和对象适配器。 适配器有三个角色,一个是目标(Target),一个是被适配者,一个是适配者。手机充电器就是一个典型的适配器模式,手机需要5V电压,这是目标,被适配者是220v电压,充电器是适配者,将220v电压降为5v电压。 类适配器和对象适配器的区别是,类适配器是适配者继承目 阅读全文
posted @ 2023-12-14 14:49 求简君 阅读(13) 评论(0) 推荐(0) 编辑
摘要:桥接模式是设计模式中最复杂的模式之一,它把事物对象和其具体行为、具体特征分离开来,使它们可以各自独立的变化。 桥接模式有两个角色,一个是主类,一个是被桥接者,主类构造函数里传入被桥接者,这样主类可以调用被桥接者,而被桥接者可以承载各种变化,从而分离开来,各自独立变化。 桥接模式如果是两个维度变化的话 阅读全文
posted @ 2023-12-14 11:14 求简君 阅读(7) 评论(0) 推荐(0) 编辑
摘要:装饰器模式和代理模式,UML类图上是一样的,结构是一样的,主要区别在于他们的目的不一样,真实使用场景不一样。 例如,抽象被装饰者为 Interface IA,被装饰者A,装饰者是A1,A2,A3,A4,我们代码里可能对A装饰多次,例如 new A1(A),new A2(A1),new A3(A2), 阅读全文
posted @ 2023-12-13 16:32 求简君 阅读(50) 评论(0) 推荐(0) 编辑
摘要:代理模式,有两个角色,一个是被代理者,一个是代理,代理其实就是生活中的中介,但是代理者可以在原本有的操作上面添加一些自己的操作或动作,就像房产中介,你要买房子,很多事他可以帮你办理,但最终拿的是你的资料进行办理的,中间有可能还有一些小操作,比方说和银行谈贷款利率,他有可能中间也会拿些回扣哦。 这里代 阅读全文
posted @ 2023-12-13 14:37 求简君 阅读(8) 评论(0) 推荐(0) 编辑
摘要:装饰器,两个角色,一个是待装饰者,一个是装饰者,就像我们早餐吃的煎饼,煎饼是待装饰者,其他的火腿、里脊、土豆丝、生菜等都是装饰者,但最终都没有改变这还是一个煎饼。 这里代码上有两个重要的点,一个是装饰者会也会继承或者实现被装饰者,第二是装饰者的构造函数会有一个类型为待装饰者的参数,代码示例如下: p 阅读全文
posted @ 2023-12-13 14:17 求简君 阅读(6) 评论(0) 推荐(0) 编辑
摘要:原型模式,对象的拷贝,分为浅拷贝深拷贝,浅拷贝深拷贝主要区别是引用类型的拷贝,是拷贝引用地址还是将值复制一份。 具体实现,对象类实现IClone()接口,并重新clone()方法。 阅读全文
posted @ 2023-12-12 11:27 求简君 阅读(5) 评论(0) 推荐(0) 编辑
摘要:建造者模式顾名思意有两个重要的原色,一个是产品(product),即我们需要的某个目标类的对象,一个建造者(builder),当然你可以把建造者先抽象出一个的abstractbuilder,再继承一个具体的builder. 最妙的一句是builder类再builder具体东西时,return thi 阅读全文
posted @ 2023-12-12 09:06 求简君 阅读(6) 评论(0) 推荐(0) 编辑
摘要:工厂模式有两个角色,一个是产品,一个是工厂。 工厂模式可分为简单工程、工厂方法、抽象工厂三类: 简单工厂模式:又叫做静态工厂方法模式。该模式是通过传⼊参数来返回相应的类,这种方式比较单一,一个工厂负责制造所有子类产品,当增加一个子类产品时,需要对工厂进行修改,扩展性相对较差。简单工厂模式看为工厂方法 阅读全文
posted @ 2023-12-11 18:12 求简君 阅读(24) 评论(0) 推荐(0) 编辑
摘要:重载,是同一个类里,方法名相同,参数不同,包括参数的类型,个数、顺序不同。 继承,是子类继承父类的特征和行为,可以称之为模板法。 多态,对于某个类型的方法调用,其真正执行的方法取决于运行时期实际对象实际类型的方法: 1、编译时多态又称静态多态,重载是编译时的多态,因为根据调用传参的类型、数量便可决定 阅读全文
posted @ 2023-12-11 17:25 求简君 阅读(86) 评论(0) 推荐(0) 编辑
摘要:静态的类、方法、字段都是共享的,在内存里是有且仅有的同一段存储,因此他不属于任何实例化的对象。明白了这一点,很多关于静态的特点就容易理解了。 例如在C#里静态类、方法、字段有这些特点: 一、静态类 静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量 阅读全文
posted @ 2023-12-11 17:11 求简君 阅读(21) 评论(0) 推荐(0) 编辑
摘要:单例,一个类获取一个共享的实例化对象。 要点: 1、构造函数私有化。 2、静态变量,静态方法 方式: 1、饿汉式,程序加载即创建单例实例。 2、懒汉式,程序加载时不创建实例,需要时再创建。懒汉式有线程风险,所以可以使用双重校验锁(校验+锁+校验)的方式,来保证线程安全。 示例代码,后续整理。 阅读全文
posted @ 2023-12-11 16:10 求简君 阅读(2) 评论(0) 推荐(0) 编辑
摘要:第一范式,简称原子性,列或属性的不可再分割。 示例:个人信息表中,人员信息中的个人地址,国家省市县全写在了一起,应该分开成几列进行单独存储,也便于以后数据统计。 第二范式,简称不存在部分依赖性,即在存在数据库两列形成的联合主键时,不存在其他非主属性仅仅依赖于组成联合主键的其中一列(一个属性)。主要目 阅读全文
posted @ 2023-12-11 14:54 求简君 阅读(8) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示