![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
JJyu可及
哈哈哈
展开
-
代理模式---简易代码实现和类图
代理模式定义:为其他对象提供一种代理,以控制对这个对象的访问。代理对象在客户端和目标对象之间起到中介的作用。类型:结构型适用场景:保护目标对象,增强目标对象优点:代理模式能将代理对象与真实被调用的目标对象分离,一定程度上降低了系统的耦合度,扩展性好,保护目标对象增强目标对象。缺点:会造成系统设计中类的数目增加。在客户端和目标对象增加了一个代理对象,会造成请求处理速度变慢。增加了系统的复杂度。扩展静态代理(显示的定义了业务实现类的代理),动态代理(只能对实现了接口的类进行动态代理),原创 2020-12-01 17:18:13 · 1056 阅读 · 0 评论 -
外观模式---简易代码实现,类图
外观模式定义又叫门面模式,提供了一个统一的接口,用来访问子系统中的一群接口。外观模式定义了一个高层接口,让子系统更容易使用。类型:结构型适用场景子系统越来越复杂,增加外观模式提供简单调用接口。构建多层系统结构,利用外观对象作为每层的入口,简化层间调用。优点:简化了调用过程,无需了解深入子系统,防止带来风险减少系统依赖,松散耦合更好的划分层次符合迪米特法则,即最少知道原则缺点增加子系统,扩展子系统行为容易引发风险不符合开闭原则外观模式VS中介者模式外观模式关注的是外界和子系统原创 2020-12-01 17:06:03 · 435 阅读 · 0 评论 -
组合模式----简易代码实现和类图
组合模式定义:将对象组合称树形结构以表示“部分-整体”的层次结构。组合模式使客户端对单个对象和组合对象保持一致的方式处理。类型:结构型适用场景:希望客户端可以忽略组合对象和单个对象的差异时处理一个树形结构时优点:清楚地定义分层次地复杂对象,表示对象地全部或部分层次。让客户端忽略了层次的差异,方便对整个层次结构进行控制。简化客户端代码。符合开闭原则。缺点:限制类型时会较为复杂。使设计变得更加抽象。组合模式和访问者模式可以使用访问者模式访问组合模式中的递归结构。代码:/原创 2020-11-30 19:24:14 · 932 阅读 · 0 评论 -
迭代器模式---简易代码实现和类图
迭代器模式定义:提供了一种方法,顺序访问一个集合对象中的各个元素,而又不暴露该对象的内部表示。类型:行为型适用场景:访问一个集合对象的内容而无需暴露它的内部表示。为遍历不同的集合结构提供一个统一的接口。优点:分离了集合对象的遍历行为。缺点:类的个数成对增加。迭代器模式和访问者模式都是迭代的访问一个集合中各个元素。访问者扩展开放对象的操作,迭代器扩展开放对象的种类。代码://集合的接口public interface Aggregate { public void ad原创 2020-11-30 19:23:21 · 722 阅读 · 2 评论 -
模板方法模式----简易代码和类图
模板方法定义:定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤。类型:行为型适用场景:一次性实现一个算法的不变的部分,并将可变行为留给子类来实现。各子类中公共的行为被提取出来并集中到一个公共父类中,从而避免代码重复。优点:提高复用性提高扩展性符合开闭原则缺点:类数目的增加,增加了系统实现的复杂度,继承关系自身的缺点,如果父类添加了新的抽象方法,所有子类都要改一遍。扩展:钩子方法,提供了子类缺省的行为原创 2020-11-30 19:22:10 · 1210 阅读 · 0 评论 -
适配器模式---代码实现,类图,电流转换实例-----Nothing
适配器模式定义:将一个类的接口转换成客户期望的另一个接口,使原本接口不兼容的类可以一起工作。类型:结构型。适用场景:已经存在的类,它的方法和需求不匹配时(方法结果相同或相似)不是软件设计阶段考虑的设计模式,是随着软件维护,由于不同产品,不同厂家造成功能类似而接口不相同情况下的解决方案。优点:能提高类的透明性和复用,现有的类复用但不需要改变目标类和适配器类解耦,提高程序扩展性。符合开闭原则。缺点:适配器编写过程需要全面考虑可能会增加系统的复杂性。增加了系统代码可读的难度。扩展对原创 2020-11-28 18:51:05 · 606 阅读 · 0 评论 -
命令模式--代码类图,man看了会沉默
命令模式定义:将请求封装成对象,以便使用不同的请求。命令模式解决了应用程序中对象的职责以及它们之间的通信方式。类型:行为型适用场景:请求的调用者和请求的接收者需要解耦,使得调用者和接收者不直接交互。需要抽象出等待执行的行为。优点:降低耦合,容易扩展新命令或者一组命令。缺点:命令的无限扩展会增加类的数量,提高系统实现复杂度。命令模式VS备忘录模式备忘录模式可以保存命令历史记录。代码://被命令操作的类CourseVideopublic class CourseVideo {原创 2020-11-28 17:54:18 · 824 阅读 · 0 评论 -
装饰者模式,代码实现类图---man看了会沉默++
装饰者模式定义:在不改变原有对象的基础上,将功能附加到对象上提供了比继承更有弹性的替代方案(扩展原有对象功能)类型:结构型模式适用场景:扩展一个类的功能或给一个类添加附加职责,动态的给一个对象添加功能,这些功能可以再动态的撤销。优点:继承的有利补充,比继承灵活,不改变原有对象的情况下给一个对象扩展功能。通过使用不同装饰类以及这些装饰类的排列组合,可以实现不同效果符合开闭原则缺点:会出现更多的代码,更多的类,增加程序复杂性。动态装饰时,多层装饰时会更复杂。装饰者VS代理模式装饰原创 2020-11-28 17:05:58 · 312 阅读 · 0 评论 -
设计模式之~观察者模式简易实现~
观察者模式定义:定义了对象之间的一对多依赖,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,它的所有依赖者(观察者)都会收到通知并更新。类型:行为型适用场景:关联行为场景,建立一套触发机制。优点:观察者和被观察者之间建立了一个抽象的耦合。观察者和被观察者都容易扩展。观察者模式支持广播通信。缺点:观察者之间有过多的细节依赖,提高时间消耗及程序复杂度。使用要得当,要避免循环调用。代码://被观察者Coursepublic class Course extends Ob原创 2020-11-27 11:58:37 · 153 阅读 · 0 评论 -
设计模式之---状态模式men看了会沉默
状态模式定义: 允许一个对象在其内部状态改变时,改变它的行为。也可只做状态转换。类型: 行为型使用场景: 一个对象存在多个状态(不同状态下行为不同),且状态可相互转换。优点: 不同状态隔离,每个状态都是一个类。 把各种状态的转换逻辑,分布到State的子类中,减少相互间依赖。 增加新的状态非常简单。缺点: 状态多的业务场景导致类数目增加,系统复杂。状态模式相关设计模式: 状态模式和享元模式。代码//状态抽象类CourseVideoStatep原创 2020-11-27 11:18:23 · 231 阅读 · 0 评论 -
设计模式之~简单工厂,工厂模式,抽象工厂~
工厂模式简单工厂定义: 由一个工厂对象决定创建出哪一种产品类的实例。类型: 创建型,但不属于GOF23种设计模式。适用场景: 工厂类负责创建的对象比较少。 客户端(应用层)只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心。优点: 只需要传入一个正确的参数,就可以获取你所需要的对象,而无须知道其创建细节。缺点: 工厂类的职责相对过澡,增加新的产品需要修改工厂类的判断逻辑,违背开闭原则。同时增加了系统类的个数。无法形成基于继承的等级结构代码:publi原创 2020-11-27 00:13:18 · 166 阅读 · 0 评论 -
设计模式之--策略模式代码实现以及升级实现
策略模式定义: 定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化不会影响到使用算法的用户。可以消除if else 和case类型: 行为型适应场景: 系统有很多类,而他们的区别仅仅在于他们的行为不同。 一个系统需要动态地在几种算法中选择一种优点: 开闭原则,在不修改原有系统地基础上修改行为,并且行为可以扩展。 避免使用多重条件转移语句也会降低耦合 提高算法的保密性和安全性缺点: 客户端必须知道所有的策略类,并自行决定使用哪个策略类原创 2020-11-25 22:56:38 · 362 阅读 · 0 评论 -
设计模式前置知识类图---设计原则----man看了会沉默,woman看了会流泪系列第二篇
设计模式学习前置知识创建者模式:5种 工厂模式,抽象工厂模式,建造者模式,单例模式,原型模式结构型模式:7种 适配器模式,装饰者模式,代理模式,外观模式,桥接模式,组合模式,享元模式。行为型模式:11种 策略模式,观察者模式,责任链模式,备忘录模式,模板方法模式,迭代器模式,中介者模式,命令模式,访问者模式,解释器模式。UML类图类图:类名,属性,方法+public,-private,#protected,~default(包权限):后面是属性类型/返回值类型;横线代表static原创 2020-11-25 20:57:03 · 1013 阅读 · 0 评论