随笔分类 -  从零单排-设计模式

设计模式之原型模式(Prototype)
摘要:1、定义 原型模式用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 2、通用类图 原型模式的核心是一个clone方法,通过该方法进行对象的拷贝,Java提供了一个Cloneable接口来标识这个对象是可拷贝的。并且重写Object的clone()方法。 3、通用源代码 太简单了,就不敲代码了 注意:浅度复制和深度复制问题。 4、随想 原型模式提供了一种不是new 对... 阅读全文

posted @ 2014-08-20 13:50 limiracle 阅读(151) 评论(0) 推荐(0)

设计模式之代理模式(Proxy)
摘要:1、定义 代理模式是一个使用率非常高的模式,它为其他对象提供一种代理以控制对这个对象的访问。 2、通用类图 subject抽象主题角色:抽象主题类可以是抽象类也可以是接口,是一个最普通的业务类型定义,无特殊要求 RelSubject具体主题角色:也叫做被委托角色、被代理角色。是业务逻辑的具体执行者。 Proxy代理主题角色:也叫委托类、代理类。它负责对真实角色的应用,把所有抽象主题类定义... 阅读全文

posted @ 2014-08-20 11:29 limiracle 阅读(164) 评论(0) 推荐(0)

设计模式之建造者模式(Builder)
摘要:1、定义 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 2、通用类图 Product产品类:通常是实现了模板方法模式,也就是有模板方法和基本方法。 Builder抽象建造者:规范产品的组建,一般是由子类实现 ConcreteBuilder具体建造者:实现抽象类定义的所有方法,并且返回一个组建好的对象 Director导演类:负责安排已有模块的顺序,然后告诉Bui... 阅读全文

posted @ 2014-08-19 17:05 limiracle 阅读(150) 评论(0) 推荐(0)

设计模式之状态模式
摘要:1、定义 允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类 2、通用类图 状态模式的核心是封装,状态的变更引起了行为的变更,从外部看起来就好像这个对象对应的类发生了改变一样。 State抽象状态角色:接口或抽象类,负责对象状态定义,并且封装环境角色以实现状态切换 ConcreteState具体状态角色:每个具体状态必须完成两个职责:本状态的行为管理以及趋向状态处理,通俗的说... 阅读全文

posted @ 2014-08-19 11:36 limiracle 阅读(176) 评论(0) 推荐(0)

设计模式之组合模式(Composite)
摘要:1、定义 组合模式(Composite Pattern)也叫合成模式,将对象组合成树形结构以表示“整体-部分”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 2、通用类图 Component抽象构件角色:定义参加组合对象的共有方法和属性,可以定义一些默认的行为或属性。 Leaf叶子构件:叶子对象,其下再也没有其他的分支,也就是遍历的最小单位。 Composite树枝构件:树... 阅读全文

posted @ 2014-08-18 18:46 limiracle 阅读(174) 评论(0) 推荐(0)

设计模式之迭代器模式(Iterator)
摘要:1、定义 迭代器模式提供一种方法访问一个容器对象中的各个元素,而又不需暴露该对象的内部细节。 基本上没有人会单独写一个迭代器,除非是产品性质的开发。 2、通用类图 Iterator抽象迭代器:抽象迭代器负责定义访问和遍历元素的接口,而且基本上是有固定的3个方法:first()获得第一个元素;next()访问下一个元素;isDone()是否已经访问到底部(Java 叫做hasNext()方... 阅读全文

posted @ 2014-08-14 15:16 limiracle 阅读(309) 评论(0) 推荐(0)

模板方法模式(Template Method)
摘要:1、定义模板方法模式(Template Method Pattern),定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。2、通用类图AbstractClass 叫抽象模板,它的方法分为两类:基本方法、模板方法基本方法:基本方法也叫... 阅读全文

posted @ 2014-08-14 11:09 limiracle 阅读(208) 评论(0) 推荐(0)

设计模式之门面模式(facade)
摘要:1、定义门面模式(Facade Pattern)也叫做外观模式,是一种比较常用的封装模式。要求一个子系统的外部与其内部的通讯必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。2、通用类图Facade门面角色:客户端可以调用这个角色的方法。此角色知晓子系统的所有功能和责任... 阅读全文

posted @ 2014-08-13 15:16 limiracle 阅读(152) 评论(0) 推荐(0)

设计模式之适配器模式(Adapter)
摘要:1、定义 将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器模式又叫做变压器模式,也叫做包装模式(Wrapper),区别于装饰者模式。 2、通用类图 target目标角色:该角色定义把其他类转换为何种接口,也就是我们的期望接口。 Adaptee源角色:你想把谁转换成目标角色,这个“谁”就是原角色,它是已经存在的,运行良好的类或对... 阅读全文

posted @ 2014-08-13 14:54 limiracle 阅读(172) 评论(0) 推荐(0)

设计模式之命令模式(command)
摘要:1、定义命令模式是一个高内聚的模式,将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。2、通用类图Receive接收者角色:该角色就是干活的角色,命令传递到这里应该被执行的。Command命令角色:需要执行的所有命令都在这里声明... 阅读全文

posted @ 2014-08-13 11:29 limiracle 阅读(272) 评论(0) 推荐(0)

设计模式之单例模式(singleton)
摘要:1、定义确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例2、通用类图Singleton类称为单例类,通过使用private的构造函数确保了在一个应用中只产生一个实例,并且是自行实例化的(在Singleton中自己使用new Singleton())。通用源码如下所示:饿汉模式:pac... 阅读全文

posted @ 2014-08-13 10:39 limiracle 阅读(176) 评论(0) 推荐(0)

设计模式之抽象工厂模式(Abstract Factory)
摘要:1、定义 抽象工厂模式为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。 2、类图 由于类太多就不上源码了~ 最佳实践: 在一个应用中,需要在三个不同平台(Windows、Linux、Android)上运行,通过抽象工厂模式屏蔽掉操作系统对应的影响三个不同操作系统上的软件功能、应用逻辑、UI都应该是非常类似的,唯一不同的是调用不同的工厂方法,由不同的产品类去处理与操作... 阅读全文

posted @ 2014-08-12 15:51 limiracle 阅读(139) 评论(0) 推荐(0)

设计模式之工厂方法模式
摘要:1、定义 工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。 2、类图 在工厂方法模式中,抽象产品类Product负责定义产品的共性,实现对事物最抽象的定义;Creator为抽象创建类,也就是抽象工厂,具体如何创建产品类是由具体的实现工厂ConcreteCreator完成的。 3、抽象代码 package factory;/** * 抽... 阅读全文

posted @ 2014-08-12 15:19 limiracle 阅读(178) 评论(0) 推荐(0)

设计模式之装饰者模式(Decorator)
摘要:1、定义装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案2、类图Component抽象构件:Component是一个接口或者是抽象类,就是定义我们最核心的对象,也就是最原始的对象。在装饰者模式中,必然有一个最基本、最核心、最原始的接口或抽象类充当Componen... 阅读全文

posted @ 2014-08-12 12:41 limiracle 阅读(324) 评论(0) 推荐(0)

设计模式之观察者模式(Observer)
摘要:1、定义 观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并启动更新。 2、类图 Subject被观察者:定义被观察者必须实现的职责,它必须能够动态地增加、取消观察者。它一般是抽象类或者是实现类,仅仅完成作为被观察者必须实现的职责:管理观察者并通知观察者。 Observer观察者:观察者接收到消息后即进行update(更新操作),对接收到的信息... 阅读全文

posted @ 2014-08-11 18:09 limiracle 阅读(774) 评论(0) 推荐(0)

设计模式之策略模式(Strategy pattern)
摘要:1、定义 策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 2、类图 Context封装角色:它也叫上下文角色,起承上启下封装作用,屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化。 Strategy抽象策略角色:策略、算法家族的抽象,通常为接口,定义每个策略或算法必须具有的方法和属性。 ConreteStrategy:具体策略角色,... 阅读全文

posted @ 2014-08-11 15:43 limiracle 阅读(188) 评论(0) 推荐(0)

导航