Skip to content

zhxhcoder/codeProj

Repository files navigation

codeProj

各种算法大汇总

设计模式算法

观察者模式, 工厂模式,
单例设计模式, 策略模式,
适配器模式, 命令模式,
装饰者模式, 外观模式,
模板方法模式, 状态模式,
建造者模式, 原型模式,
享元模式, 代理模式,
桥接模式, 组合模式,
迭代器模式, 中介者模式,
备忘录模式, 解释器模式,
责任链模式, 访问者模式

** 策略模式(Strategy Pattern)**:定义了算法族,分别封装起来,让它们之间可相互替换,此模式让算法的变化独立于使用算法的客户。";

** 单例模式(Singleton Pattern)**:主要是为了避免因为创建了多个实例造成资源的浪费,且多个实例由于多次调用容易导致结果出现错误,而使用单例模式能够保证整个应用中有且只有一个实例。";

** 观察者模式(Observer Pattern)**:定义了对象之间的一对多的依赖,这样一来,当一个对象改变时,它的所有的依赖者都会收到通知并自动更新。";

** 适配器模式(Adapter Pattern)**定义:将一个类的接口转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以相互合作。这个定义还好,说适配器的功能就是把一个接口转成另一个接口。";

** 命令模式(Command Pattern)**定义:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。(简化: 将请求封装成对象,将动作请求者和动作执行者解耦。)";

** 装饰者模式(Decorator Pattern)**定义:若要扩展功能,装饰者提供了比集成更有弹性的替代方案,动态地将责任附加到对象上。(先简单描述下装饰者模式发挥作用的地方,当我们设计好了一个类,我们需要给这个类添加一些辅助的功能,并且不希望改变这个类的代码,这时候就是装饰者模式大展雄威的时候了。这里还体现了一个原则:类应该对扩展开放,对修改关闭。))";

** 外观模式(Facade Pattern)**定义:提供一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层的接口,让子系统更容易使用。其实就是为了方便客户的使用,把一群操作,封装成一个方法。)";

** 模板方法模式(Template Method Pattern)**定义:定义了一个算法的骨架,而将一些步骤延迟到子类中,模版方法使得子类可以在不改变算法结构的情况下,重新定义算法的步骤。(模版方法定义了一个算法的步骤,并且允许子类为一个或多个步骤提供实现。)";

** 建造者模式(Builder Pattern)**建造模式是对象的创建模式。建造模式可以将一个产品的内部表象(internal representation)与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。";

** 原型模式(Prototype Pattern)**定义:是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。";

** 享元模式(Flyweight Pattern)**主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。";

** 代理模式(Proxy Pattern)**一个类代表另一个类的功能。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。";

** 简单工厂模式**定义:通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。";

** 工厂方法模式**定义:定义一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法模式把类实例化的过程推迟到子类。";

** 抽象工厂模式**定义:提供一个接口,用于创建相关的或依赖对象的家族,而不需要明确指定具体类。";

** 状态模式**定义:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。定义又开始模糊了,理一下,当对象的内部状态改变时,它的行为跟随状态的改变而改变了,看起来好像重新初始化了一个类似的。";

** 桥接模式(Bridge Pattern)**是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口[DrawAPI],使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。";

** 组合模式(Composite Pattern)**又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。";

** 迭代器模式(Iterator Pattern)**是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。主要解决:不同的方式来遍历整个整合对象。";

** 中介者模式(Mediator Pattern)**是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。";

** 备忘录模式(Memento Pattern)**保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。主要解决:所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。";

** 解释器模式(Interpreter Pattern)**提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。";

** 责任链模式(Chain of Responsibility Pattern)**为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。\n\n 在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。";

** 访问者模式(Visitor Pattern):**在访问者模式中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。";

多线程并发同步

架构设计

LeetCode算法题

热门100道

精选200道

Releases

No releases published

Packages

 
 
 

Languages