
设计模式
文章平均质量分 76
sir_TI
成长吧,骚年!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
工厂模式
工厂方法定义 工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类去决定实例化哪一个对象。工厂方法让一个类的实例化延迟到其子类。 工厂方法结构图 简单工厂模式和工厂方法模式简单对比 当需要增加求M的N次方的功能的时候,就不需要更改原有的工厂类,只需要增加功能的运算类和相应的工厂类就可以了。这是和 简单工厂模式所不相同的,简单工厂模式是需要去更改那个抽象类...原创 2018-10-11 12:28:53 · 161 阅读 · 0 评论 -
命令模式
命令模式 定义 命令模式(Command):将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。 UML 对象说明 Command:用来声明执行操作的接口 ConcreteCommand:将一个接受者对象绑定于一个动作,调用接受者相应的操作,以实现excute() Invoke:要求该命令执行这个请求。 Rec...原创 2018-11-27 22:03:29 · 198 阅读 · 0 评论 -
桥接模式
桥接模式 定义 桥接模式(Bridge):将抽象部分和它的实现部分分离,使他们都可以独立的变化。 UML 对象说明 Abstration:抽象类 Implementor:实现 ConcreteImplementorA、ConcreteImplementorB:派生子类 Demo 本demo主要是基于手机品牌和手机软件的设计。我们在设计的过程中需要知道手机品牌和手机软件之间...原创 2018-11-26 22:45:49 · 192 阅读 · 0 评论 -
适配器模式(Adapter)
适配器模式 定义 适配器(Adapter),将一个类的接口转换为客户所希望的另外的接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 UML 对象介绍 Target:客户所期待的接口。目标可以是具体的或者抽象的类,也可以是接口 Adaptee:需要进行适配的类 Adapter:通过在内部包含一个Adaptee对象,把源接口转换成目标接口。 ...原创 2018-11-17 19:00:15 · 202 阅读 · 0 评论 -
迭代器模式
迭代器模式 关于迭代器模式,在这里主要是画出UML图,因为迭代器模式我们基本上都已经使用过了,比如在Java程序中封装的比较的foreach,就是使用了迭代器模式。 定义 Iterator:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。 UML 对象说明 Aggregate:聚焦抽象类 ConcreteAggregate:具体聚焦类,继承Aggre...原创 2018-11-19 19:11:05 · 220 阅读 · 0 评论 -
单例模式
单例模式 定义 保证一个类仅有一个实例,并且提供一个访问它的全局访问点。 UML 对象说明 Singleton:定义一个getInstance()操作,允许客户访问它的唯一实例。getInstance()是一个静态方法,主要负责创建自己的唯一实例。 Demo public class SingletonTest { public static void main(S...原创 2018-11-20 17:54:49 · 179 阅读 · 0 评论 -
组合模式
组合模式 定义 将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 UML 对象说明 Component:为组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component的子部件。 Leaf:在组合结点中表示叶结点对象,叶结点中没有子节点。 Composite:定义有枝结点的...原创 2018-11-18 21:47:16 · 275 阅读 · 0 评论 -
备忘录模式
备忘录模式(Memento) 定义 在不破坏对象封装的前提下,捕获一个的对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 UML 对象说明 Originator:负责创建一个备忘录Memento,用以记录当前时刻它的内部状态,并可以使用备忘录恢复到内部状态。Originator可以根据需要决定Memento存储Originator的哪些内部...原创 2018-11-18 20:06:29 · 513 阅读 · 0 评论 -
观察者模式(Observer)
观察者模式 定义:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有的观察者对象,使它们能够自动更新自己。 UML图 代码 /** * @className:ISubject * @Description: 抽象类 * @Date:2018/11/4 23:12 */ public interface ...原创 2018-11-05 12:31:03 · 240 阅读 · 0 评论 -
状态模式
状态模式 定义 当一个对象的内在状态改变时允许改变其行为,这个对象看起来是改变了其类。 UML 代码需求分许过程 需求:根据每个时间段员工的不同状态写出相关的表示员工状态的类 工作状态-函数版(完成基本的功能) public class Demo { static int hour=0; static boolean workFinished=false; ...原创 2018-11-07 20:18:49 · 162 阅读 · 0 评论 -
抽象工厂模式
抽象工厂模式(Abstract Factory) 定义 提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。 UML 各部分介绍 AbstractProductA、AbstractProductB:两个抽象的产品,之所以抽象,是因为这两个产品可能具有不同的实现 ProductA1、ProductA2、ProductB1、ProductB2:对两个抽象产品的具体分类...原创 2018-11-06 23:50:11 · 206 阅读 · 0 评论 -
建造者模式(Builder)
目录 建造者模式 UML图 对象说明 基本代码 小结 建造者模式 定义:将一个复杂模型的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 UML图 如果我们使用了建造者模式,那么用户就只是需要指定需要建造的类型就可以得到他们,而具体建造的过程和细节就不需要知道了。 对象说明 Builder:建造内容的抽象类,指定需要建造的内容,是为创建一个Product对...原创 2018-11-01 22:49:15 · 176 阅读 · 0 评论 -
外观模式
外观模式 定义:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易实现 UML图 外观模式应用实例 SubSystems Class public class SubSystemOne { public void methodOne(){ System.out.println("subsystem one r...原创 2018-10-16 10:19:18 · 179 阅读 · 0 评论 -
迪米特模式
迪米特法则 定义:如果两个类之间不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某个方法,可以通过第三者转发这个调用。 UML图 设计模式实例 在本例子中,采用学校,班级,以及学生的形式来组成。 首先我们可以分析,学校和学生之间不应该是具有直接的联系。学校应该是由班级组成,然后每个班级里面包含各种各样的学生。那么按照Law of Deme...原创 2018-10-15 16:25:08 · 205 阅读 · 0 评论 -
模板方法模式
模板方法 定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定的步骤 模板方法结构图 模板方法实现 /** * 假设本题是以考生答试卷为背景,对于考生而言,是不需要去抄试卷的,只是需要去写对应每个题目的答案 * 即可。那么我们把试卷给抽取出来,学生只是需要去写出答案即可 * */ TestPape...原创 2018-10-13 17:09:37 · 191 阅读 · 1 评论 -
原型模式
原型模式(Prototype) 定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 原型模式结构图 原型模式初步探索 简单完成一份简历模板的撰写,最后要求三份一模一样的简历 Client Class public class Client1 { public static void main(String[] args) { Resu...原创 2018-10-13 15:33:22 · 196 阅读 · 0 评论 -
责任链模式
职责链模式 定义 职责链模式(Chain of Responsibility):使多个对象都有可能处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这多个对象连成一条链,并且沿着这条链传递该请求,知道有一个对象处理它为止。 UML 对象说明 Handler:定义一个处理请求的接口; ConcreteHandler:具体处理者类,处理它所负责的请求,可访问它的后继者,如果可...原创 2018-11-30 23:47:34 · 177 阅读 · 0 评论