
设计模式
gycool21
java软件工程师,不断积累,不断进步
展开
-
设计模式基础知识
从工作开始,导师就教育我要看设计模式。他推荐了两本书“大话设计模式”、“Head First 设计模式”,从中受益匪浅。基于以上理论,决定写下一些关于设计模式的知识,待将来可以快速的温习该方面的知识。我认为设计模式的基础知识包含两方面:1.六大原则 2.UML图 设计模式六大原则1.单一职责原则(Single Responsibility Principle)定义:不要存在多于一个导致类变更的原因。转载 2016-10-08 15:09:26 · 520 阅读 · 0 评论 -
设计模式(12)命令模式--行为型
定义将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 ①封装请求:抽象出需要执行的动作,封装成对象(有统一的接口)。 ②参数化:可以用不同的命令对象,去参数化配置客户的请求。(即,将命令对象作为参数去供Invoker调用)。角色Invoker要求命令对象执行请求,通常会持有命令对象,可以持有很多的命令对象。这个是客户端真正触发原创 2017-08-12 21:25:27 · 375 阅读 · 0 评论 -
设计模式(8)观察者模式-行为型
定义定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。角色抽象主题(ISubject)定义主题中的要实现的方法,包括保存所有的观察者,观察者注册,取消注册(增删)等。主题类(ConcreteSubject)实现了抽象主题中的具体方法。抽象观察者(IObserver)定义观察者要实现的方法,比如:更新,修改,回滚,显示等方法。观察者类(ConcreteO原创 2017-06-04 13:39:57 · 341 阅读 · 0 评论 -
设计模式(11)组合模式--结构型
定义允许你将对象组合为树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。角色抽象构件角色(component)是组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component子部件。树叶构件角色(Leaf)在组合树中表示叶节点对象,叶节点没有子节点。并在组合中定义图元对象的行为。树枝构件角色(Composite)原创 2017-08-10 22:26:13 · 257 阅读 · 0 评论 -
设计模式(10) 迭代器模式--行为型
定义迭代器模式(Iterator Pattern):提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示 何时使用: 1)需要扩展一个类的功能,或给一个类增加附加责任。 2)需要动态的给一个对象增加功能,这些功能可以再动态地撤销。 3)需要增加一些基本功能的排列组合而产生的非常大量的功能,从而使继承变得 不现实。角色抽象迭代器(Iterator)抽象迭代器定原创 2017-08-07 22:26:28 · 646 阅读 · 0 评论 -
设计模式(9)装饰模式--结构型
定义动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。不改变接口的前提下,增强所考虑的类的性能。 何时使用: 1)需要扩展一个类的功能,或给一个类增加附加责任。 2)需要动态的给一个对象增加功能,这些功能可以再动态地撤销。 3)需要增加一些基本功能的排列组合而产生的非常大量的功能,从而使继承变得 不现实。角色抽象构件原创 2017-08-01 22:17:36 · 239 阅读 · 0 评论 -
设计模式(7)模板模式--行为型
定义在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。角色类图示例引申原创 2016-10-20 13:37:18 · 335 阅读 · 0 评论 -
设计模式(6)状态模式--行为型
定义角色Context: 环境类。可以包括一些内部状态。 State: 抽象状态类。State定义了一个所有具体状态的共同接口,任何状态都实现这个相同的接口,这样一来,状态之间就可以互相转换了。 ConcreteState: 具体状态类。具体状态类,用于处理来自Context的请求,每一个ConcreteState都提供了它对自己请求的实现,所以,当Context改变状态时行为也会原创 2016-10-19 15:46:08 · 322 阅读 · 0 评论 -
设计模式(2) 策略模式--行为型
策略模式:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法独立于使用算法的客户。组成 环境类(Context):用一个ConcreteStrategy对象来配置。维护一个对Strategy对象的引用。可定义一个接口来让Strategy访问它的数据。 抽象策略类(Strategy):定义所有支持的算法的公共接口。 Context使用这个接口来调用某ConcreteStrategy定原创 2016-10-12 10:36:31 · 335 阅读 · 0 评论 -
设计模式(3)门面模式--结构型
门面模式:外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。 三大角色: 子系统角色:实现各个子系统的功能。门面角色和客户角色对其是透明的,它没有任何的信息和链接。 门面角色:门面模式的核心。它被客户角色调用,其熟悉子系统的功能,且其内部根据客户角色的各种需求提供了不同的方法。 客户角色:调用门面角色来实现所需的功能。在什么情况下使用门原创 2016-10-12 16:52:42 · 446 阅读 · 0 评论 -
设计模式(1) 单例模式--创建型
单例模式:确保一个类只有一个实例,并提供一个全局访问点。原创 2016-10-09 16:08:07 · 285 阅读 · 0 评论 -
设计模式(4)工厂方法模式--创建型
细致的讲,工厂方法模式分为三种:简单工厂模式,工厂方法模式,抽象工厂模式原创 2016-10-13 16:30:08 · 326 阅读 · 0 评论 -
设计模式(13)享元模式--结构型
定义运用共享技术有效地支持大量细颗粒度对象的复用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。角色抽象享元类(Flyweight)抽象享元类声明一个接口,通过它可以接受并作用于外部状态。在抽象享元类中定义了具体享元类公共的方法,这些方法可以向外界提供享元的内部数据(内部状态),同时也可以通过这些方法来设置外部数据(外部状态)具体享元类(ConcreteFlywei原创 2017-08-21 22:09:18 · 417 阅读 · 0 评论