随笔分类 -  设计模式

设计模式-Builder和Factory模式区别
摘要:Builder和Factory模式区别 Builder模式结构: Factory模式一进一出,Builder模式是分步流水线作业。当你需要做一系列有序的工作或者按照一定的逻辑来完成创建一个对象时 Builder就派上用场啦。我们可以看到,Builer模式与工厂模式是极为相似的,但是他们还是有区别的: 阅读全文

posted @ 2019-03-16 21:39 手握太阳 阅读(2903) 评论(0) 推荐(0)

设计模式-状态模式
摘要:什么时候使用状态模式 通过前面的阐述,我们基本上了解了状态模式的样子。那我们什么时候使用状态模式呢?来看看Martin Fowler的这个重构:Replace Type Code with State/Stategy 你有一个type code,它会影响class的行为,但你无法使用subclass 阅读全文

posted @ 2019-01-21 22:18 手握太阳 阅读(204) 评论(0) 推荐(0)

设计模式-策略模式
摘要:策略模式(Strategy Pattern):定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。策略模式是一种对象行为型模式。 策略模式(Strategy Pattern):定义一系列算法类,将每一个算法封装起来,并 阅读全文

posted @ 2019-01-20 19:52 手握太阳 阅读(190) 评论(0) 推荐(0)

设计模式-总结
摘要:策略模式:将算法封装为类 命令模式:将函数调用封装为类 状态模式:将状态封装为类 适配器与装饰器的区别 适配器属于质变 装饰器属于量变 阅读全文

posted @ 2019-01-11 22:15 手握太阳 阅读(103) 评论(0) 推荐(0)

设计模式-命令模式
摘要:在阎宏博士的《JAVA与模式》一书中开头是这样描述命令(Command)模式的: 命令模式属于对象的行为模式。命令模式又称为行动(Action)模式或交易(Transaction)模式。 命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求 阅读全文

posted @ 2018-09-15 23:24 手握太阳 阅读(175) 评论(0) 推荐(0)

设计模式-心得
摘要:如何解耦:将复杂耦合对象 A 在逻辑上分成a1、a2两部分,将a2独立成类,并抽象化(接口化)(顶层接口名称为Interface_a2),再创建Client(可由平台充当)将a1与Interface_a2组装起来。总结过程:分拆、抽象、组装 组装的过程:可以是代码组装、xml配置组装、Spring等 阅读全文

posted @ 2018-09-15 23:20 手握太阳 阅读(132) 评论(0) 推荐(0)

设计模式-责任链模式
摘要:职责链模式可分为纯的职责链模式和不纯的职责链模式两种: (1) 纯的职责链模式 一个纯的职责链模式要求一个具体处理者对象只能在两个行为中选择一个:要么承担全部责任,要么将责任推给下家,不允许出现某一个具体处理者对象在承担了一部分或全部责任后又将责任向下传递的情况。而且在纯的职责链模式中,要求一个请求 阅读全文

posted @ 2018-09-15 18:07 手握太阳 阅读(120) 评论(0) 推荐(0)

设计模式-代理模式与装饰模式的区别
摘要:代理模式中,代理类对被代理的对象有控制权,决定其执行或者不执行。 装饰模式中,装饰类对代理对象没有控制权,只能为其增加一层装饰,以加强被装饰对象的功能 比如一个Plane类它的fly()方法中飞行速度是300m/s,那能不能实现500m/s的飞机对象呢?有装饰模式就可以实现。700m/s的呢?呵呵, 阅读全文

posted @ 2018-08-18 19:35 手握太阳 阅读(977) 评论(0) 推荐(0)

设计模式-代理模式
摘要:(2) 虚拟代理(Virtual Proxy):如果需要创建一个资源消耗较大的对象,先创建一个消耗相对较小的对象来表示,真实对象只在需要时才会被真正创建。 (3) 保护代理(Protect Proxy):控制对一个对象的访问,可以给不同的用户提供不同级别的使用权限。 (4) 缓冲代理(Cache P 阅读全文

posted @ 2018-08-18 18:47 手握太阳 阅读(171) 评论(0) 推荐(0)

设计模式-享元模式
摘要:(2) 享元模式的外部状态相对独立,而且不会影响其内部状态,从而使得享元对象可以在不同的环境中被共享。 (2) 为了使对象可以共享,享元模式需要将享元对象的部分状态外部化,而读取外部状态将使得运行时间变长。 (2) 对象的大部分状态都可以外部化,可以将这些外部状态传入对象中。 (3) 在使用享元模式 阅读全文

posted @ 2018-08-18 16:05 手握太阳 阅读(202) 评论(0) 推荐(0)

设计模式-外观模式
摘要:(1) 它对客户端屏蔽了子系统组件,减少了客户端所需处理的对象数目,并使得子系统使用起来更加容易。通过引入外观模式,客户端代码将变得很简单,与之关联的对象也很少。 (2) 它实现了子系统与客户端之间的松耦合关系,这使得子系统的变化不会影响到调用它的客户端,只需要调整外观类即可。 (3) 一个子系统的 阅读全文

posted @ 2018-08-15 21:22 手握太阳 阅读(80) 评论(0) 推荐(0)

设计模式-装饰模式
摘要:(2) 尽量保持具体构件类ConcreteComponent是一个“轻”类,也就是说不要把太多的行为放在具体构件类中,我们可以通过装饰类对其进行扩展。 (3) 如果只有一个具体构件类,那么抽象装饰类可以作为该具体构件类的直接子类 (2) 可以通过一种动态的方式来扩展一个对象的功能,通过配置文件可以在 阅读全文

posted @ 2018-08-13 22:08 手握太阳 阅读(97) 评论(0) 推荐(0)

设计模式-树形结构的处理——组合模式(五)
摘要:树形结构的处理——组合模式(五) 11.5 公司组织结构 在学习和使用组合模式时,Sunny软件公司开发人员发现树形结构其实随处可见,例如Sunny公司的组织结构就是“一棵标准的树”,如图11-8所示: 图11-8 Sunny公司组织结构图 在Sunny软件公司的内部办公系统Sunny OA系统中, 阅读全文

posted @ 2018-08-12 21:37 手握太阳 阅读(341) 评论(0) 推荐(0)

设计模式-树形结构的处理——组合模式(四)
摘要:树形结构的处理——组合模式(四) 11.4 透明组合模式与安全组合模式 通过引入组合模式,Sunny公司设计的杀毒软件具有良好的可扩展性,在增加新的文件类型时,无须修改现有类库代码,只需增加一个新的文件类作为AbstractFile类的子类即可,但是由于在AbstractFile中声明了大量用于管理 阅读全文

posted @ 2018-08-12 21:36 手握太阳 阅读(169) 评论(0) 推荐(0)

设计模式-树形结构的处理——组合模式(三)
摘要:树形结构的处理——组合模式(三) 11.3 完整解决方案 为了让系统具有更好的灵活性和可扩展性,客户端可以一致地对待文件和文件夹,Sunny公司开发人员使用组合模式来进行杀毒软件的框架设计,其基本结构如图11-5所示: 图11-5 杀毒软件框架设计结构图 在图11-5中, AbstractFile充 阅读全文

posted @ 2018-08-12 21:35 手握太阳 阅读(353) 评论(0) 推荐(0)

设计模式-树形结构的处理——组合模式(二)
摘要:树形结构的处理——组合模式(二) 11.2 组合模式概述 对于树形结构,当容器对象(如文件夹)的某一个方法被调用时,将遍历整个树形结构,寻找也包含这个方法的成员对象(可以是容器对象,也可以是叶子对象)并调用执行,牵一而动百,其中使用了递归调用的机制来对整个结构进行处理。由于容器对象和叶子对象在功能上 阅读全文

posted @ 2018-08-12 21:34 手握太阳 阅读(323) 评论(0) 推荐(0)

设计模式-树形结构的处理——组合模式(一)
摘要:注:组合模式:不仅要支持父子树状结构的递归,还要支持不同类型的父、不同类型的子之间在递归行为中产生各自不同的执行结果。 树形结构的处理——组合模式(一) 树形结构在软件中随处可见,例如操作系统中的目录结构、应用软件中的菜单、办公系统中的公司组织结构等等,如何运用面向对象的方式来处理这种树形结构是组合 阅读全文

posted @ 2018-08-12 21:33 手握太阳 阅读(1144) 评论(0) 推荐(0)

设计模式-适配器模式
摘要:● Target(目标抽象类):目标抽象类定义客户所需接口,可以是一个抽象类或接口,也可以是具体类。 ● Adapter(适配器类):适配器可以调用另一个接口,作为一个转换器,对Adaptee和Target进行适配,适配器类是适配器模式的核心,在对象适配器中,它通过继承Target并关联一个Adap 阅读全文

posted @ 2018-08-12 19:43 手握太阳 阅读(158) 评论(0) 推荐(0)

设计模式-建造者模式
摘要:(2) 每一个具体建造者都相对独立,而与其他的具体建造者无关,因此可以很方便地替换具体建造者或增加新的具体建造者,用户使用不同的具体建造者即可得到不同的产品对象。由于指挥者类针对抽象建造者编程,增加新的具体建造者无须修改原有类库的代码,系统扩展方便,符合“开闭原则” (3) 可以更加精细地控制产品的 阅读全文

posted @ 2018-08-11 23:15 手握太阳 阅读(146) 评论(0) 推荐(0)

设计模式-原型模式
摘要:原型模式的核心在于如何实现克隆方法 优点: (1)当创建新的对象实例较为复杂时,使用原型模式可以简化对象的创建过程,通过复制一个已有实例可以提高新实例的创建效率。(2)扩展性较好,由于在原型模式中提供了抽象原型类,在客户端可以针对抽象原型类进行编程,而将具体原型类写在配置文件中,增加或减少产品类对原有系统都没有任何影响。(3)原型模式提供了简化的创建结构,工厂方法模式常常需要有一个与产品类等... 阅读全文

posted @ 2018-08-09 21:55 手握太阳 阅读(118) 评论(0) 推荐(0)

导航