Design pattern
文章平均质量分 70
云海尘淸
这个作者很懒,什么都没留下…
展开
-
java_factory method
introduction:一个抽象的Factory类(可以是类或者接口),这个类将不再负责具体产品的生产,而只是指定一些规范,具体的生产工作由子类去完成。demo:Factory.java public interface Factory { void sayHello();}HelloFactory.javapublic class HelloFacto原创 2013-02-07 16:59:14 · 457 阅读 · 0 评论 -
java_decorator
introduction:装饰者模式:装饰者对象和被装饰者对象有相同的超类型,这里我们利用继承达到类型匹配,而不是用继承获得"行为"可以使用一个或者多个装饰者包装一个对象既然装饰者和被装饰者对象有相同的超类型,所以在任何需要原始对象(被包装的)场合,可以用装饰过的对象代替它装饰者可以在所委托被装饰者行为之前与之后加上自己的行为,以达到特定的目的对象可以在任何时候被装饰,所以原创 2013-03-25 15:56:59 · 683 阅读 · 0 评论 -
java_singleton_读配置文件
对于作用于整个工程的类实例化时,使用单例模式可以节约资源 1.通过读取配置文件获取类包路径 2.使用java反射机制实例化一个类代码入下:package com.asarja.util;import java.util.Properties;public class SingletonUtils { /** * 读取配置文件 */ private原创 2013-01-24 16:32:11 · 667 阅读 · 0 评论 -
java_abstract factory
instroduction:多个抽象角色使用的一种工厂模式,抽象工厂模式可以向用户提供一种接口,使用户在不指定产品的具体情况下,创建多个产品族中的产品对象。demo:description:目前有pc mac 两大系列产品产品结构有:ram cpu两种1.首先定义ram 和cpu两种产品结构:Cpu.javapublic interface Cpu {}原创 2013-02-08 13:51:15 · 358 阅读 · 0 评论 -
java_adapter
introduction:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以无间合作。被适配者的任何子类,都可以搭配着适配器使用类适配器和对象适配器1.类适配器:类适配器是继承被适配者和目标类,这里需要使用多重继承,因此java语言不适用。不需要重新实现我的整个被适配者,必要的时候,可以覆盖被适配者的行为。仅仅需要一个类适配器,而不需要一个适原创 2013-02-18 17:10:48 · 507 阅读 · 0 评论 -
java_template method
introduction:模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。模板就是一个方法,这个方法将算法定义成一组步骤,其中的任何步骤都可以是抽象的,由子类负责实现。这可以确保算法的结构保持不变,同时由子类提供部分实现。钩子是一种被申明在抽象类中的方法,但只有空的或者默认的实现。钩原创 2013-02-25 09:41:26 · 666 阅读 · 0 评论 -
java_composite
introduction:组合模式:允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。组合模式让我们能用树形方式创建对象的结构,树里面包含了组合及个别的对象。使用组合结构,我们能把相同的操作运用在组合和个别对象上。换句话说,在大多数情况下,我们可以忽略对象组合和个别对象之间的差别。为了保证透明性,组合内所有的对象都必须实现原创 2013-03-08 14:31:00 · 904 阅读 · 0 评论 -
java_state
introduction:状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。该模式将状态封装成独立的类,并将动作委托到代表当前状态的对象,我们知道行为会随着内部状态而改变。通过组合简单引用不同的状态对象来造成类改变的假象。状态模式是不想在context中放置许多条件判断的替代方案。通过将行为包装进状态对象中,你可以通过在context内简单地改变状原创 2013-03-14 17:19:37 · 1073 阅读 · 0 评论 -
java_proxy
introduction:代理模式:为另一个对象提供一个替身或占位符以控制对象的访问。使用代理模式创建代表对象,让代表对象控制某对象的访问,被代理的对象可以是远程的对象、创建开销大的对象或需要安全控制的对象。在真实的世界中,代理模式有许多变体,这些变体都有共通点:都会将客户对主题(subject)施加的方法调用拦截下来。代理模式的结构类似装饰者,但目的是不同的。代理模式与适原创 2013-03-19 13:59:04 · 906 阅读 · 0 评论 -
java_singleton
instroduction:单件模式:确保一个类只有一个实例,并提供一个全局访问点。1.由类自己管理一个单件实例,同时避免其他类再自行产生实例。2.当你需要实例的时候,向类查询,它会返回单个实例。这种做法对敏感资源特别重要。demo:description:1.延迟实例化单例:LazySingleton.javapublic class LazySingle原创 2013-02-11 20:06:49 · 390 阅读 · 0 评论 -
java_command
introduction:命令模式:将“请求”封转成对象,以便使用不同的请求,队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。当需要将发出请求的对象和执行请求的对象解耦的时候,使用命令模式。在传统的软件系统中,行为请求者和行为实现者之间通常呈现为一种紧耦合,将一组行为抽象为对象,实现二者之间的松耦合。命令模式的本质:对命令进行封装,将发出命令的责任和执行命令的责任分开原创 2013-02-16 17:53:32 · 479 阅读 · 0 评论 -
java_command_宏命令
introduction:这样做的目的可以减少“硬编码”,动态决定命令组合,在使用上更灵活,一般来说,宏命令的做法更优雅,也需要较少的新代码。demo:description:模拟开舞会的场景,此时会需要灯光和音乐Light.javapublic class Light { private String name; public Light原创 2013-02-16 23:52:11 · 609 阅读 · 0 评论 -
java_facade
introduction:外观模式:提供一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。外观没有”封装“子系统的类,外观只是提供简化的接口。客户如果觉得有必要依然可以直接使用子系统的类。外观模式一个很好的特征:提供简化的接口的同时,依然将系统完整的功能暴露出来,以供需要的人使用。demo:description:以用户操作一台原创 2013-02-18 17:46:02 · 747 阅读 · 0 评论 -
java_iterator
introduction:迭代器模式:提供一个方法顺序访问一个聚合对象的各个元素,而又不暴露其内部的表示。如果有一个统一的办法访问聚合中的每一个对象,你就可以编写多态的代码和这些聚合搭配。元素之间游走的任务交给迭代器,而不是聚合对象。这不仅让聚合的接口和实现变得更简洁,也让聚合更专注在管理对象集合上。demo:1.模拟自己一天的三餐菜单description:迭代器原创 2013-03-01 16:46:27 · 482 阅读 · 0 评论 -
java_observer
introduction:观察者模式:Subjet+Observer = 观察者模式定义对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。一个有状态的主题对应多个观察者。主题是正真拥有数据的人,观察者是主题的依赖者。这样的设计可以使对象之间松耦合,他们之间相互交互,但是不清楚彼此之间的细节。观察者模式允许推和拉两种模式。ja原创 2013-03-20 13:41:27 · 790 阅读 · 0 评论 -
java_bridge
introduction:桥接模式:优点:将实现予以解耦,让它和界面之间不再永久绑定。抽象和实现可以独立扩展,不会影响对方。对于“具体的抽象类”所做的改变,不会影响到客户。当需要用不同的方式改变接口和实现时,适用于桥接模式缺点:增加了复杂度demo:description:桥接模式适用于多个层次之间的设计TV.javapublic interfa原创 2013-04-01 15:29:56 · 733 阅读 · 0 评论 -
java_strategy
introduction:策略模式:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。使用策略模式可以在运行时动态地选择具体要执行的行为。对用户隐藏具体策略(算法)的实现细节,彼此完全独立。demo:description:使用策略模式封装操作不同数据库的算法,而这些算法是可以相互替换的,他们独立于用户的调用程序。DBStr原创 2013-03-26 14:00:27 · 681 阅读 · 0 评论