随笔分类 -  16-设计模式

摘要:简单工厂 简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,它通过一个工厂类来封装对象的创建逻辑,客户端只需传入参数即可获取所需对象,而无需关心具体实现细节。 ​核心概念​ ​抽象产品​:定义产品的公共接口(如IShape),所有具体产品必须实现该接口。 ​具体产品​ 阅读全文
posted @ 2024-10-28 10:16 .Neterr 阅读(36) 评论(0) 推荐(0)
摘要:访问者模式介绍 最复杂的设计模式,并且使用频率不高 访问者模式是一种将数据操作和数据结构分离的设计模式。 访问者模式的使用场景 对象结构比较稳定,但经常需要在此对象结构上定义新的操作。 需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免这些操作“污染”这些对象的类,也不希望在增加新 阅读全文
posted @ 2023-04-07 15:00 .Neterr 阅读(50) 评论(0) 推荐(0)
摘要:概念 外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。门面模式又称为外观模式,它是一种对象结构型模式 何时使用 当子系统比较复杂,我们提供一个统一的对外接口用于简化子系统调用,比如项目中每个 阅读全文
posted @ 2020-11-30 10:50 .Neterr 阅读(104) 评论(0) 推荐(0)
摘要:观察者模式用于解耦调用者与被调用者,项目中用的EventBus是观察者模式的实现 详细代码在这里:https://www.cnblogs.com/fanfan-90/p/11971178.html 阅读全文
posted @ 2020-11-30 10:27 .Neterr 阅读(93) 评论(0) 推荐(0)
摘要:Provider和Factory的区别: 可以往工厂里面添加Provider。也就是说Factory里面可能存在着许许多多的Provider。而这些Provider将是最后Factory创建出结果的必要支撑。 我们可以在项目中根据已有的provider接口,演变出各种的策略来,比如 XMLLogPr 阅读全文
posted @ 2020-08-11 00:35 .Neterr 阅读(2695) 评论(0) 推荐(0)
摘要:定义 迭代器模式提供了一种方法,顺序访问集合对象中的元素,而又不暴露该对象的内部实现。 将集合中遍历元素的操作抽象出来,这样符合面向对象设计原则中的单一职责原则,我们要尽可能的分离这些职责,用不同的类去承担不同的责任,避免一个类中承担太多的责任。迭代器模式就是用迭代器类来承担遍历集合元素的责任。 自 阅读全文
posted @ 2020-07-25 11:31 .Neterr 阅读(103) 评论(0) 推荐(0)
摘要:为什么优先使用组合而不是继承 继承的起源,来自于多个类中相同特征和行为的抽象。子类可以通过继承父类,那么可以调用父类中定义的方法和属性,从而达到代码重用的目的。另外,子类除了重用父类的代码以外,还可以扩展自身的属性和方法,来描述子类特有的特征和行为。 例如:人类和马类这两个类,有什么共同的特征和行为 阅读全文
posted @ 2020-07-13 10:14 .Neterr 阅读(163) 评论(0) 推荐(0)
摘要:定义 责任链,顾名思义,就是用来处理相关事务责任的一条执行链,执行链上有多个节点,每个节点都有机会(条件匹配)处理请求事务,如果某个节点处理完了就可以根据实际业务需求传递给下一个节点继续处理或者返回处理完毕 案例 客户端输入校验,需要多个校验步骤,比如sql注入校验、违禁词校验、js校验 客户端调用 阅读全文
posted @ 2020-07-10 22:39 .Neterr 阅读(182) 评论(0) 推荐(0)
摘要:官方定义 适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作 说明 适配器模式数据结构型设计模式 当接口已经存在,通过适配器类使接口不兼容的那些类可以一起工作 案例 在电商项目中会对接多个支付接口,不同的支付接口调用方式不一样,有些是 阅读全文
posted @ 2020-07-10 09:00 .Neterr 阅读(191) 评论(0) 推荐(0)
摘要:什么是桥接模式 桥接模式是一种结构型设计模式,它将一个大类或一系列紧密相关的类拆分成抽象和实现两个独立的层次结构,使它们可以分别变化。桥接模式通过将抽象部分与实现部分分离,可以使它们可以独立地扩展和变化。 使用场景 如果一个系统需要在构建的抽象化角色和具体角色之间增加更多的灵活性,避免在两个层次之间 阅读全文
posted @ 2020-07-09 23:41 .Neterr 阅读(939) 评论(0) 推荐(0)
摘要:定义 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 类图 应用场景 避免产生多个对象消耗过多的资源(特别是一个对象需要频繁的创建和销毁时); 提供一个全局访问点,常常被用来管理系统中共享的资源(作为一个Manager)。 实现方式 延迟初始化(懒汉模式) 适用于单线程应用程序 阅读全文
posted @ 2020-05-27 10:58 .Neterr 阅读(154) 评论(0) 推荐(0)
摘要:什么是状态模式 状态模式是一种行为型设计模式,它主要用来解决对象在不同状态下的行为问题。在状态模式中,一个对象的内部状态改变时,它的行为也会随之改变。实现状态模式的关键是将对象的不同状态抽象成独立的类,然后将这些状态类与原有对象关联起来组成一个状态机。 状态模式应用场景 当一个对象的行为取决于内部状 阅读全文
posted @ 2020-05-10 22:45 .Neterr 阅读(174) 评论(0) 推荐(0)
摘要:定义 策略模式定义了一系列的算法,并将每一个算法封装起来,使它们可以互相替换 个人理解类似委托的作用,将算法通过客户端传入,起到订制的作用 Demo 客户端: IActive active = new HighActive(); decimal payPrice = new ActiveExecut 阅读全文
posted @ 2020-04-29 20:14 .Neterr 阅读(154) 评论(0) 推荐(0)
摘要:建造者模式(Builder Pattern)是一种创建型设计模式,它将复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。该模式适用于构建过程复杂且涉及多个步骤的场景,特别适合需要灵活配置的对象。 核心概念与角色​ ​产品(Product)​​ 最终构建的复杂对象,包含多个部件(如 阅读全文
posted @ 2020-04-29 19:05 .Neterr 阅读(162) 评论(0) 推荐(0)
摘要:定义 模板方法定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 模板方法是一种代码复用的基本技术,在类库中尤为重要,因为他们提取了类库中的公共行为。模板方法导致一种反向的控制结构,这种结构就是传说中的“好莱坞法则”,即“ 阅读全文
posted @ 2020-04-28 21:02 .Neterr 阅读(163) 评论(0) 推荐(0)
摘要:公共的发布订阅组件,不需要再在组件中写发布订阅相关逻辑,用于模块间解耦,支持排序、传参,原创~ EventContainer:发布-订阅公共组件 Array.prototype.sort = function (fn) {//数组排序 var temp; fn = fn || function (a 阅读全文
posted @ 2020-04-26 19:10 .Neterr 阅读(320) 评论(0) 推荐(0)
摘要:设计模式分类 创建型设计模式 关注对象的创建,new的花样就有很多 单例模式 工厂模式 工厂方法模式 原型模式 建造者模式 结构型设计模式 专注于类和对象的组合方式,通过灵活的架构设计提升代码的复用性、扩展性和可维护性。 结构型设计模式其实就是折腾组合与继承,(组合优于继承)。 结构型设计模式本质是 阅读全文
posted @ 2019-12-06 22:11 .Neterr 阅读(5878) 评论(1) 推荐(0)