随笔分类 - 设计模式
Design Pattern
摘要:代理模式:为另外一个对象提供替身或者占位符,以控制对这个对象的访问。(1)使用代理模式创建代表对象,让代表对象控制某对象的访问,被代理的对象可以是远程的对象、创建开销大的对象或者需要安全控制的对象(2)代理模式有很多变体,共通点都是讲客户对主题施加的方法调用拦截下来,这种间接的级别可以让我们做很多事...
阅读全文
摘要:状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类(1)将状态封装成了独立的类,并将动作委托到了代表当前状态的对象(2)当前状态在状态集合中游走改变,以反映出当前的状态(3)避免用许多个if语句来判断下一个状态怎么走
阅读全文
摘要:组合模式:允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致方式处理个别对象以及对象组合。(1)组合模式以单一责任设计原则换区透明性。什么是透明性,通过让组件的接口同时包含一些管理子节点和叶子节点的操作,客户就可以将组合和叶子节点一视同仁(2)当你有个对象的集合,他们彼此之间...
阅读全文
摘要:迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴漏其内部的表示(1)迭代器模式让我们能够游走于聚合内的每一个元素,我们不应该再使用对象自己进行遍历,而应该用迭代器(2)每个具体的聚合都要实例化一个具体的迭代器,此迭代器能够遍历对象集合
阅读全文
摘要:模板方法模式:在一个方法定义中定义一个算法的骨架,而将一些步骤延迟到子类中。使得类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。(1)可以在方法中定义一个空的钩子,钩子在抽象类中不做事,而是由子类真正实现钩子功能(2)为了防止子类改变模板方法中的算法,可以将模板方法声明为final
阅读全文
摘要:外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观接口定义了一个更高层的接口,让子系统更容易使用。这可能是最容易理解得一个设计模式了
阅读全文
摘要:适配器模式:将一个类的接口,转换成客户期望的另一个接口。让原本接口不兼容的类可以合作无间。(1)当需要一个现有的类,而其接口并不符合你的需要时,就需要一个适配器(2)适配器有两种形式:对象适配器和类适配器,后者要用到多重继承
阅读全文
摘要:命令模式:将请求封装成对象,这可以让你使用不同的请求、队列,或者日志请求来参数化其他对象。命令模式也可以支持撤销操作。(1)RemoteControl保存一组命令对象(2)命令对象不但包含了动作,还包含了接受者对象
阅读全文
摘要:1、工厂模式:定义了一组创建对象的接口,但是由子类决定要实例化的类是哪一个。工厂方法把类的实例化推迟到子类中。现在考虑有PizzaStore有一些子类(加盟店),他们有可能对pizza的做法进行一些改良,即createPizza方法需要升级。工厂方法的做法是,在基类中建立一个形为abstract P...
阅读全文
摘要:装饰者模式:动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。(1)对扩展开放,对闭合修改。装饰者利用原对象的工能,只是增加了扩展(2)就像下面的第三张图一样,最外层的装饰者会依次调用底层装饰者的方法,最终返回串行执行后的最终结果(3)装饰者的目的就是在被装饰者的行为之前...
阅读全文
摘要:观察者模式:定义了对象之间的依赖,这样一来,当一个对象状态改变的时候,他的所有依赖者都会受到通知并自动改变(1)主题者内置了一个List,用来保存向自己注册的观察者,观察者可以随时加入或者退出(2)一旦主题自己发生了变化,会遍历自己内置的List,调用观察者的update方法(3)观察者的updat...
阅读全文
摘要:策略模式:定义了算法簇,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。(1)把可变化的行为单独封装起来
阅读全文
摘要:最近开发的一个功能,要求读取一个目录,对目录下的文件名进行过滤。考虑到读取目录是一个独立的与文件操作相关的公共功能,与业务没有关系,而文件名的过滤条件是由不同的业务决定的,所以二者要做到逻辑上的隔离。因此想到针对不同的业务涉及不同的过滤器,文件目录读取工具类能够接受过滤器作为参数,而不必关心过滤器到...
阅读全文

浙公网安备 33010602011771号