自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 策略模式(Strategy Pattern)

文章目录策略模式模式动机模式定义模式结构模式分析模式优点模式缺点适用环境模式扩展总结策略模式策略模式: 它定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户。策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,他可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合。策略模式的Strategy类层次为Context定义了一系类的可供重用的算法或者行为,继承有助于截取出这些算法中的公共功能。同

2022-01-13 15:45:10 221

原创 状态模式(StatePattern)

文章目录状态模式(StatePattern)模式动机模式定义模式结构模式分析在状态模式结构中需要理解环境类与抽象状态类的作用模式实例模式优点模式缺点模式应用模式拓展共享状态简单状态模式与可切换状态的状态模式总结状态模式(StatePattern)状态模式 当一个对象的内在状态在状态改变时允许改变其行为,这个对象看起来像是改变了其类状态模式主要解决的是当控制一个对象状态转化的条件表达式过于复杂时的情况,把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。状态模式的好处是将于特定

2022-01-03 22:10:55 298

原创 观察者模式(ObserverPattern)

观察者模式(ObserverPattern)观察者模式又被叫做发布订阅(Publish/Subscribe)模式观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生改变时,会通知所有观察者对象,使他们都自动更新自己委托就是一种引用方法的类型,一旦为委托分配了方法,委托将与该方法具有完全相同的行为,委托方法的使用可以像其他任何方法一样,具有参数和返回值,委托可以看做对函数的抽象,是函数的类,委托的实例将代表一个具体的函数模式动机建立一种对象与对象之间的

2022-01-02 16:22:36 263

原创 中介者模式(MediatorPattern)

中介者模式中介者模式 用一个中介对象来封装一系列对象的交互,中介者使各个对象不需要显示的相互引用,从而是的其耦合松散,而且可以独立的改变他们之前的交互。通过中介者进行消息的转发将原本网状结构变成以中介者为中心的星型结构尽管将一个系统分割成很多对象通常可以增加其复用性,但是对象间相互连接的激增又会降低其可复用性 大量的连接是的一个对象不可能在没有其他对象的支持下工作,系统表现为一个不可分割的整体,所以 对系统的行为进行任何比较大的改动就十分困难使用场景中介者模式一般应用于一组对象以定义良好但是复杂的

2021-12-27 20:58:45 332

原创 命令模式(CommondPattern)

文章目录命令模式模式动机模式定义模式结构模式分析模式实例电视机遥控器模式优点模式缺点适用环境模式应用模式扩展总结命令模式请求行为者与请求实现者紧耦合命令模式 命令模式将一个请求封装为一个对象,从而是的你可用不同的请求对客户进行参数化 对请求排队或者记录请求日志,以及支持可撤销的操作优点比较容易地设计一个命令队列在需求的情况下,可以比较容易地将命令记录进日志允许接受请求的一方决定是否否决请求可以实现对请求的撤销和重做由于加进新的具体命令类不影响其他的类 因此增加新的具体命令类很容易命令

2021-12-24 23:58:25 213

原创 代理模式(ProxyPattern)

代理模式(ProxyPattern)代理模式 为其他对象提供一种代理以控制对这个对象的访问远程代理,也就是为一个对象在不同的地址控件提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实虚拟代理,根据需要创建开销很大的对象,通过他来存储实例化需要很长时间的真是对象安全代理 用来控制真实对象访问时的权限智能指引 指当调用真实的对象时,代理处理另外一些事情模式动机在某些情况下,一个客户不想或者不能直接引用一个对 象,此时可以通过一个称之为“代理”的第三者来实现 间接引用。代理对象可以在客户

2021-12-22 00:20:53 462

原创 享元模式(FlyweightPattern)

文章目录享元模式模式动机模式定义模式结构模式分析模式优点模式缺点适用环境模式应用模式拓展单纯享元模式和复合享元模式享元模式与其他模式的联用总结享元模式有点类似于cell的cell复用池的概念享元模式 运用共享技术有效的地支持大量细粒度的对象享元模式可以避免大量非常相似类的开销,在程序设计中,有时需要生成细粒度的类实例来表示数据,如果能发现这些实例除了几个参数外基本都是相同的,有时就能够受大幅度地减少需要实例化类的数量,如果能把哪些参数移到类实例的外面,在方法调用时将他们传进来,就可以通过共享大幅度地

2021-12-21 00:06:58 141

原创 外观模式(FacadePattern)

文章目录外观模式何时使用模式定义模式结构模式分析模式优点模式缺点适用环境模式拓展一个系统有多个外观类不要试图通过外观类为子系统增加新行为外观模式与迪米特法则抽象外观类的引入总结外观模式外观模式(FacadePattern) 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层的接口,这个接口使得这一子系统更加容易使用何时使用首先在设计初期阶段,应该要有意识的将不同的两个层分离,比如经典的三层架构,就需要考虑在数据访问层和业务逻辑层,业务逻辑层和表示层的层与层之间建立外观Facade,这样可

2021-12-19 21:16:55 522

原创 装饰模式(Decorator Pattern)

文章目录模式动机模式定义模式结构模式分析例子模式优点模式缺点适用环境模式拓展总结装饰模式 动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活建造者模式和装饰模式的区别建造者模式要求建造的过程必须是稳定的,而现在这个例子中构建的过程是不稳定Component是定义一个对象接口,可以给这些对象动态地添加职责,ConcreteComponent是定义了一个具体的对象,也可以给这个对象添加一些职责,Decorator,装饰抽象类,继承了Component从外类来扩展Compo

2021-12-18 22:25:58 413

原创 桥接模式(Bridge Pattern)

文章目录继承带来的问题聚合/合成复用原则桥接模式模式动机模式定义模式结构模式分析模式优点模式缺点适用场景模式应用模式拓展模式总结继承带来的问题对象的继承关系是在编译时就定义好了的,所有无法在运行时修改从父类继承的实现,子类的实现与他的父类有十分紧密的依赖关系,以至于父类实现中的任何变化必然会导致子类的发生变化,当你需要复用子类的时,如果继承下来的实现不适合解决新问题,则父类必须要重写或者被其他的更适合的类替换,这种依赖关系限制了灵活并最终限制了复用性聚合/合成复用原则尽量使用合成/聚合,尽量不要使用

2021-12-12 23:57:21 225

原创 适配器模式(AdapterPattern)

文章目录模式动机模式定义模式结构模式优点模式缺点模式适用模式应用模式拓展总结适配器模式 将一个类的接口转换成客户端希望的另外的一个接口 Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作系统的数据和行为都正确,但接口不符合时,我们应该考虑使用适配器模式,目的是使得控制范围之外的一个原有对象与某个接口匹配,适配器模式主要应用在希望复用一些现存的类,但是接口又与复用环境要求不一致的情况下。类适配器和对象适配器当想使用一个已经存在的类,但如果他的接口,也就是他的方法和你要求的不相同

2021-12-09 23:30:59 121

原创 单例模式(Singleton Pattern)

文章目录模式动机模式定义模式结构模式分析模式实例模式优点模式缺点适用场景模式应用总结单例模式 保证一个类仅有一个实例,并提供一个访问他的全局访问点通常我们可以让一个全局变量使得一个对象被访问,但他不能防止你实例化多个对象,一个最好的方法就是,让类自身负责保存他的唯一实例,这个类可以保证没有其他实例可以被外部创建,并且他可以提供一个访问该实例的方法单例模式因为Singleton类封装他的唯一实例,这样他可以严格的控制客户端怎样访问他以及何时访问他简单地说就是对唯一实例的受控访问单例模式的两个基本的问

2021-12-07 10:47:19 434

原创 建造者模式(Builder Pattern)

文章目录模式动机模式定义模式结构模式分析Demo模式优点模式缺点适用场景模式应用模式拓展总结建造者模式 将一个复杂度对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示如果使用了建造者模式,那么用户就只需指定需要建造的类型就可以得到他们,而建造的过程和细节不需要知道建造者模式: 将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。指挥者类,用他来控制创建过程,也用他来隔离用户与建造过程的关联角色Builder 是为创建一个Product对象的各个部分指定的抽象接

2021-12-02 14:36:47 209

原创 工厂模式总结

文章目录介绍简单工厂模式优点缺点工厂方法模式优点缺点抽象工厂模式优点缺点总结介绍工厂三姐妹简单工厂模式 (小妹)工厂方法模式 (二姐)抽象工厂模式 (大姐)简单工厂模式简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类(简单工厂类)来负责创建其他类的实例,被创建的实例通常都具有共同的父类。简单工厂的核心在于工

2021-11-30 15:42:17 588

原创 抽象工程模式(Abstract Factory)

背景故事一个项目最开始底层支持的数据是SQLServer但是后面需要改动为Access,我们必须要把所有设计到底层数据的地方支持都修改,如果后面发生了修改还需要修改两个地方,或者增加新的底层支持后我们又要去修改,copy出第三份,这将是一场灾难呀。。。可以使用工厂方法模式,但是有一个问题就是系统中一定是不止一张表的,这就需要我们在工厂类中添加多个创建对应具体产品的类,我们可以将这些工厂公共部分抽离,这也就形成了抽象工厂如下图所示的样子创建抽象工厂,抽象产品,具体工厂,具体产品, IUser, IDep

2021-11-26 21:46:39 416

原创 工厂方法模式(Factory Method Pattern)

定义工厂方法模式: 定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使得一个类的实例化延迟到其子类实现(工厂的子类)还是沿用前面的计算器的例子,我们在简单工厂中创建的工厂类,其中包含的关键行的分支逻辑,来决定我们创建的具体是哪一个产品,这使得在增加一个新的功能时不得不去修改这个工厂类,这不符合开闭原则,于是我们可以尝试使用工厂方法类来实现这个过程。使用工厂方法类需要结构角色:抽象产品类,具体产品类,抽象工厂类,具体工厂类,具体工厂对应具体产品,每个具体工厂只生产对应的产品,同时这些具体工

2021-11-25 20:55:50 123

原创 简单工厂模式(Sample Factory Pattern)

文章目录背景介绍模式动机模式定义模式分析模式优点模式缺点适用场景总结背景介绍背景是需要创建一个简单的计算器程序,根据分装业务的特性,将加减乘除对应的操作封装进不同的子类中,这些操作继承自公共的父类,父类提供了共有的操作数,返回结果等属性和方法,现在客用户端要去调用,但是客户端不知道应该去实例化那个具体操作的类,这是可以使用简单工厂模式来设计。创建一个简单工厂类,在简单工厂类中根据客户端传过来的标识符,返回特定的子类,根据多态特性调用具体子类的返回结果方法,核心代码在简单工厂类中的分支结构。使用这个模式的

2021-11-24 17:10:30 163

原创 Introduce

Introduce专栏写作目的本专栏是在学习设计模式的时候,发现因为编码经验的不足很多设计模式体会的不够深刻,同时因为设计模式的内容比较零散,所以一遍学习,一遍记录,会同步将设计模式的代码同步Demo代码同步到OC版 需要有写点不好地方大家可以帮我指正哈~学习材料:大话设计模式Design Patterns面向对象编程所有编程初学者都会遇到这样的问题,就是碰到问题就直觉地用计算机能够理解的逻辑来描述和表达待解决的问题及具体求解过程,这样设计的代码面向具体的细节实现,当需求产生变化的不容易维

2021-11-24 15:22:12 70

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除