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