读书笔记-设计模式
lu_pan_feng
这个作者很懒,什么都没留下…
展开
-
设计模式学习--备忘录模式
备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态Originator:发起人,负责创建一个备忘录Memento,用以记录当前时刻他的内部状态,并可使用备忘录恢复内部状态, Originator可根据需要觉得Memento存储Originator的那些内部状态Memento:备忘录,负责存储Origin原创 2016-05-15 23:52:12 · 353 阅读 · 0 评论 -
设计模式学习--命令模式
命令模式: 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作.1. 它能较容易的设计一个命令队列2.在需要的情况下,可以较容易的将命令记入日志3.允许接收请求的一方决定是否要否决请求4.可以容易的实现对请求的撤销和重做5.由于加进新的具体命令类不影响其他得类,因此增加新的具体命令类和容易6.把请求一个操原创 2016-04-19 23:20:04 · 274 阅读 · 0 评论 -
设计模式学习--原型模式
原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.原型模式其实就是从一个对象在创建另外一个可定制的对象,而且不需要知道任何创建的细节.类初始化需要消耗非常多的资源,这个资源包括数据,硬件资源等,通过原型拷贝避免这些消耗;通过new产生一个对象需要非常繁琐的数据准备或访问权限,这是可以使用原型模式;一个对象需要提供给其他对象访问,而且各个调用者可能都需原创 2016-04-24 12:31:45 · 277 阅读 · 0 评论 -
设计模式学习--工厂方法模式
工厂方法模式: 定义一个用于创建对象的接口,让子类决定实例化那个一个类.工厂方法使一个类的实例化延迟到其子类.在任何需要生成复杂对象的地方,都可以使用工厂方法模式.复杂对象适合使用工厂模式.用new就可以完成创建的对象无需要使用工厂模式.主要可以分为四个模块:1.抽象工厂,为工厂方法模式的核心2.具体工厂,实现了具体的业务逻辑3.抽象产品,是工厂方法模式缩创建的产品的父原创 2016-04-24 17:19:54 · 262 阅读 · 0 评论 -
设计模式学习--装饰模式
装饰模式:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更灵活,装饰模式是为已有功能动态地添加更多功能的一中方式.其使用一种对客户端透明的方法来动态地扩展对象的功能,同时他也是继承关系的一种替代方案,当系统需要新功能的时候,相旧的类中添加新的代码,这些新的代码通常装饰了原有类的核心职责或主要功能,但是这样的问题在于,他们在朱磊中加入了新的字段,新的方法和新的原创 2016-04-24 23:36:42 · 266 阅读 · 0 评论 -
设计模式学习--模板方法模式
模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤.原创 2016-04-25 23:38:49 · 234 阅读 · 0 评论 -
设计模式学习--状态模式
状态模式: 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类状态模式中的行为时有状态来觉得的,不同的状态下有不同的行为.状态模式和策略模式的结构几乎完全一样,但是他们的目的和本质却完全不一样,状态模式的行为是平行的,不可替代的,策略模式的行为是彼此独立,可相互替换的. 状态模式吧对象的行为包装在不同的状态对象里,每一个状态对象都有一个共同的抽象状态基类,状态模式的原创 2016-05-17 23:29:38 · 217 阅读 · 0 评论 -
设计模式学习--访问者模式
访问者模式:封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作访问者模式是一种将数据操作与数据结构分离的设计模式,其基本想法是软件张拥有一个由许多对象构成的,比较稳定的对象结构,这些对象中的类都拥有一个accept方法用来接受访问者的访问.访问者是一个接口,它拥有一个visit方法,这个方法对访问到的对象结构中不同类型的元素作出不原创 2016-05-19 00:07:23 · 255 阅读 · 0 评论 -
设计模式学习--适配器模式
适配器模式:吧一个列的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法一起工作的两个类能够在一起工作使用场景:系统需要使用现有的类,而此类的接口不符合系统的需要,即接口不兼容想要简历一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作需要一个统一的输出接口,而输入端的类型不可预知例如ListView中的原创 2016-05-22 23:00:30 · 203 阅读 · 0 评论 -
设计模式学习--责任链模式
责任链模式: 使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,只到有对象处理他未止.使用场景:多个对象可以处理同一个请求,但具体由哪个对象处理则在运行时动态觉得在请求处理者不明确的情况下向对个对象中的一个提交一个请求需要动态指定一组对象处理请求对于职责链中的一个处理者对象,其只有两个行为,一原创 2016-06-01 07:30:43 · 236 阅读 · 0 评论 -
设计模式学习--享元模式
享元模式:使用共享对象可有效地支持大量的细粒度的对象.享元模式是对象池的一种实现,用来尽可能的减少内存使用量,它适合用于可能存在大量重复对象的场景,来缓存可共享的对象,达到对象共享,避免创建过多对象的效果,这样一来就可以提升性能,避免内存溢出等.享元对象中的部分状态是可以共享,可以共享的状态成为内部状态,内部状态不会随着环境变化,不可共享的状态则称为外部状态,他们会随着环境的改变而原创 2016-06-02 07:31:21 · 368 阅读 · 0 评论 -
设计模式学习--建造者模式
建造者模式:将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示使用场景 相同的方法,不同的执行顺序,产生不同的时间结果时,多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时产品类非常复杂,或者产品类中的调用顺序不同产生了不同的作用当初始化一个对象特别复杂,如参数多,且很多参数都具有默认值时建造者模式是在当创建复杂对象的原创 2016-05-02 19:04:52 · 180 阅读 · 0 评论 -
设计模式学习--桥接模式
桥接模式: 将抽象部分与他的实现部分分离,是他们都可以独立的变化.任何多维度变化类或者多个树状类之间的耦合都可以使用桥接模式来实现解耦如果一个系统需要在构件的抽象化角色和具体角色之间增加更多的灵活性;避免在两个层次之间建立静态的继承联系,可以通过桥接模式事他们在抽象层建立一个管理关系对于那些不希望使用继承或因为多层次继承导致系统类的个数极具增加的系统,也可以考虑使用桥接模式原创 2016-05-04 00:19:05 · 231 阅读 · 0 评论 -
设计模式学习--代理模式
代理模式:为其他对象提供一种代理已控制这个对象的访问当无法或不想直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,委托对象与代理对象需要实现相同的接口,原创 2016-04-27 23:50:20 · 220 阅读 · 0 评论 -
设计模式学习--中介者模式
中介者模式:包装了一系列对象相互作用的方式,是的这些对象不必相互明显作用.从而使他们可以松散耦合,当某些对象之间的作用发生改变时,不会立即影响其他得一些对象之间的作用.保证这些对象可以彼此独立的变化,原创 2016-04-28 23:08:13 · 251 阅读 · 0 评论 -
设计模式学习--组合模式
组合模式:将对象组合成树形结构以表示"部分-整体"的层次结构,组合模式使用用户对单个对象和组合对象的使用具有一致性但需求中是体现部分与整体层次的结构时,以及希望用户可以忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象时,就应该考虑用组合模式了基本对象可以被组合成更负责的组合对象,而这个组合对象又可以被组合,这样不断递归下去,客户代码中,任何用到基本对象的地方都可以使用组原创 2016-05-03 00:03:55 · 225 阅读 · 0 评论 -
设计模式学习--迭代器模式
迭代器模式:提供一种方法循序访问一个容器对象中的各个元素,而又不暴漏该对象的内部表示迭代器模式又称为游标模式,其源于对容器的访问,比如list map 数组等,我们知道对容器对象的访问必然涉及遍历算法,我们可以将遍历的方法封装找容器中,或者不提供遍历方法. 如果我们将遍历的方法封装到容器中,那么对于容器类来说就承担了过多的功能,容器类不仅要维护自身内部的数据元素而且还有对外提供遍历的接原创 2016-05-23 23:33:10 · 240 阅读 · 0 评论 -
设计模式学习--设计原则
单一职责原则: 就一个类而言,应该仅有一个引起他变化的原因如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能来,这种耦合会导致脆弱的设计,当变化发生时,设计会遭受意想不到的破坏如果你能想到多于一个的动机去改变一个类,那么这个类就具有多余一个的职责,就应该考虑类的职责分离开放封闭原则: 就是谁软件实体可以扩展,但是不可修改原创 2016-05-04 23:55:59 · 295 阅读 · 0 评论 -
设计模式学习--外观模式
外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用.首先,在设计初期阶段,应该有意识的将不同的两个层分离,比如经典的三层架构,就需要考虑在数据访问层,业务逻辑层和表示层的层与层之间建立外观Facade,这样可以为复杂的子系统提供一个简单的接口,使得耦合大大降低.其次,在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂,大多数的模式使用原创 2016-04-17 23:18:07 · 302 阅读 · 0 评论