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