设计模式
sunghosts
这个作者很懒,什么都没留下…
展开
-
设计模式——生成器模式
定义 也叫建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 Product产品类。通常是实现了模板方法模式,也就是模板方法和基本方法 Builder抽象建造者。规范产品的组建,一般是由子类实现。 ConcreteBuilder具体建造者。实现抽象类定义的所有方法,并且返回一个组建好的对象。 Director导演类。负责安排已有模块的顺序,然后告诉Build...原创 2020-03-28 22:04:25 · 124 阅读 · 0 评论 -
设计模式——状态模式
定义: 当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。 State抽象状态角色。接口或者抽象类,负责对象状态定义,并且封装环境角色以实现状态切换。 ConcreteState具体状态角色。有两个职责:本状态的行为管理以及趋向状态处理。本状态下要做的事情,以及本状态如何过渡到其他状态。 Context环境角色。定义客户端需要的接口,并且负责具体状态的切换。 环境角色两个不...原创 2020-03-28 20:30:19 · 104 阅读 · 0 评论 -
设计模式——装饰模式
定义 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更加灵活。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xK5zSLbv-1585386652500)(https://github.com/sunshineflg/img/blob/master/20191212210656.jpg?raw=true)] Component抽象构件。是...原创 2020-03-28 17:11:18 · 95 阅读 · 0 评论 -
设计模式——责任链模式
定义 使多个对象都有机会处理请求,从而避免了请求的发送者和接受着之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。 优点 将请求和处理分开,请求者可以不用直到是谁处理的,处理者可以不用直到请求的全貌,两者解耦,提高系统灵活性。 缺点 性能问题;调试不方便 参考 《设计模式之禅》 ...原创 2020-03-28 17:10:43 · 93 阅读 · 0 评论 -
设计模式——适配器模式
定义 将一个类的接口变换成客户端期待的另一个接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作,又叫做变压器模式,也叫做包装模式。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ckowvba9-1585386560540)(https://github.com/sunshineflg/img/blob/master/20191221001355.j...原创 2020-03-28 17:09:49 · 100 阅读 · 0 评论 -
设计模式——模板模式
定义: 定义一个操作中的算法框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 抽象模板通常有两类方法: 基本方法由子类实现的方法,并且在模板方法中调用。 模板方法可以有一个或者几个,一般是一个具体方法,也就是一个框架,实现对基本方法的调度,完成固定的逻辑。 优点 封装不变部分,扩展可变部分 提取公共部分代码,便于维护 行为由父类控制,子类实现 ...原创 2020-03-28 17:08:52 · 69 阅读 · 0 评论 -
设计模式——门面模式
定义 也叫做外观模式。要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易使用。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XZGof7xT-1585386487421)(https://github.com/sunshineflg/img/blob/master/20200326235721.jpg?raw...原创 2020-03-28 17:08:28 · 129 阅读 · 0 评论 -
设计模式——建造者模式
定义 建造者模式也叫做生成器模式。定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 下面是该模式的类图: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T8QjFvSx-1585386445224)(https://github.com/sunshineflg/img/blob/master/20191106215244.jpg?ra...原创 2020-03-28 17:07:47 · 79 阅读 · 0 评论 -
设计模式——观察者模式
定义 也叫做发布订阅模式。定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖它的对象都会得到通知并被自动更新。下面是模式通用类图。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-99vHIFoe-1585386392685)(https://github.com/sunshineflg/img/blob/master/20200116214541....原创 2020-03-28 17:07:15 · 84 阅读 · 0 评论 -
设计模式——工厂方法模式
定义:一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 工厂方法模式的优点 良好的封装性,代码结构清晰。对象的创建有条件约束,调用者只需要知道类名即可,不需要了解创建过程。 扩展性优秀。如果工厂类的返回类型是泛型或者接口时,那么返回一个新产生的对象时,工厂类不需要修改。也意味着工厂类屏蔽了返回对象的差异。比如:JDBC屏蔽了不同数据库产品的差异,对不同的数...原创 2020-03-28 17:06:11 · 90 阅读 · 0 评论 -
设计模式——访问者模式
定义: 封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mL0N3mjx-1585386314104)(https://github.com/sunshineflg/img/blob/master/20200327223406.jpg?raw=true)] Vi...原创 2020-03-28 17:05:35 · 201 阅读 · 0 评论 -
设计模式——代理模式
定义 为其他对象提供一种代理以控制对这个对象的访问。 代理模式也叫做委托模式,它是一项基本设计技巧。许多其他的模式,如状态模式、策略模式、访问者模式本质上是在更特殊的场合采用了委托模式。代理模式提供了非常好的访问控制。 优点 职责明晰 高扩展性 Spring AOP是一个典型的动态代理 普通代理:需要用户设置代理服务器的IP地址,用户必须知道代理的存在。 透明代理: 用户不用设置代理服务器地址,就...原创 2020-03-28 17:05:04 · 353 阅读 · 0 评论 -
设计模式——策略模式
定义 也叫做政策模式。定义一组算法,将每个算法都封装起来,并且使他们之间可以互换。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m9TymF03-1585386198181)(https://github.com/sunshineflg/img/blob/master/20191212230232.jpg?raw=true)] Context封装角色。上下文角色,...原创 2020-03-28 17:04:29 · 89 阅读 · 0 评论 -
设计模式之禅_6大设计原则
单一职责原则 定义 应该有且只有一个原因引起类的变更 里氏替换原则 定义 所有引用基类的地方必须能透明的使用其子类的对象 如果子类不能完整地实现父类的方法,或者父类的某些方法在子类中已经发生“畸变”,则建议断开父子继承关系,采用依赖、聚集、组合等关系代替继承。 四个原则: 1. 子类必须完全实现父类的方法 2. 子类可以有自己的个性 3. 覆盖或实现父类的方法时,输...原创 2018-09-08 02:15:22 · 156 阅读 · 0 评论 -
Java--设计模式之单例模式
java单例模式单例模式的特点 单例类只能有一个实例; 单例类必须自己创建自己的唯一实例; 单例类必须给所有其他对象提供这一实例。 两种常用的单例类设计懒汉式:public class Singleton{ private static Singleton instance = null; private Singleton(){} public static Singlet原创 2016-12-26 23:33:38 · 252 阅读 · 0 评论