设计模式
文章平均质量分 57
李一
简单点
展开
-
普通工厂模式、工厂方法模式、抽象工厂模式
概述 属于创建型设计模式,需要生成的对象叫做产品 ,生成对象的地方叫做工厂 。1.普通工厂模式使用场景:在任何需要生成复杂对象的地方,都可以使用工厂方法模式。准备: 定义一个接口:public interface Api { public void say();}编写几个实现接口的方法:public class Impl1 imp...原创 2018-03-06 19:18:22 · 285 阅读 · 0 评论 -
模板方法模式
模板方法模式 :定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模块方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。也就是说抽象父类定义算法格式的骨架,一些不确定的实现由子类来实现。具体java实现如下: 抽象父类:public abstract class AbstractSchool { public final void studyDay(){...原创 2018-03-13 16:09:09 · 130 阅读 · 0 评论 -
代理模式
代理模式:为其他对象提供一种代理以控制对这个对象的访问。 这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。 代理模式有三种写法:静态代理 首先,我们需要一个代理接口public interface Something { public void doSthing();}然后代理对象的实现类。public class So...原创 2018-03-12 17:45:39 · 116 阅读 · 0 评论 -
装饰器模式
装饰器模式,是对已经存在的某些类进行装饰,以此来扩展一些功能。其结构图如下(图片转自:https://www.cnblogs.com/jzb-blog/p/6717349.html): Component抽象构件角色:真实对象和装饰对象有相同的接口。这样,客户端对象就能够以与真实对象相同的方式同装饰对象交互。ConcreteCompoent具体构建角色(真实对象):定义一个将要接收附...原创 2018-03-12 14:29:11 · 146 阅读 · 0 评论 -
备忘录模式
备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象回复到原先保存的状态。备忘录角色分类: Memento(备忘录)角色:负责存储Originator对象的内部状态,并可防止Originator以外的其他对象访问备忘录。备忘录实际上有两个接口,“备忘录管理者角色”只能看到备忘录提供的窄接口——对于备忘录角色中存放的属性是不可见的。“备忘...原创 2018-03-16 11:58:45 · 182 阅读 · 0 评论 -
原型模式
原型模式实际功能主要包含下面两个:通过克隆创建新的对象实例为克隆出来的新的对象实例复制原型实例属性的值。一般来说克隆对象与原型对象的值是一样的,但是也有一定区别,对于基本数据类型,我们会发现改变克隆模式的值原型模式不会改变。但是对于引用数据类型来说,如果是浅拷贝会出现他们所指的类型是同一区域,也就是改变克隆模式引用类型的值时,会影响到原型模式。如果是深拷贝的话就不会出现这种情况。下面我...原创 2018-03-09 13:49:55 · 127 阅读 · 0 评论 -
适配器模式
适配器模式:将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的哪些类可以一起工作。 适配器模式有三种不同的类别,分别是:类适配器模式、对象的适配器模式、接口的适配器模式。类适配器模式 我们直接看代码吧:适配前接口public interface Voltage220 { public int out220();}...原创 2018-03-15 18:02:17 · 142 阅读 · 0 评论 -
策略模式与状态模式
策略模式:它定义了算法家族,分别封装起来,让他们之间可以相互替代,此模式让算法发生变化,不会影响到使用算法的客户。 我们继续来打去学校的例子。先看代码。 定义一个策略接口:public interface ToSchoolStrategy { public void toSchool();}策略实现:public class ExceptionalStrategy im...原创 2018-03-15 14:41:17 · 870 阅读 · 0 评论 -
生成器模式(建造者模式)
生成器模式功能:生成器模式的重心在于分离构建算法和具体的构建实现,从而使得构建算法可以重用。具体的构造实现可以很方便地扩展和切换,从而可以灵活的组合构造出不同的产品。 建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造者模式属于对象创建型模式。根据中文翻译的不同,建造者模式又可以称为生成器模式。...原创 2018-03-08 17:05:20 · 309 阅读 · 0 评论 -
观察者模式
观察者模式:定义一种一对多的依赖关系,让多个观察者对象同时监控某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。这个模式比较绕。我尽量吧上面具体展示在代码位置进行注释,希望对你能有帮助。我也是饶了好久好了若干次关系图才理清。希望我的注解能对你理解这种模式有所帮助。首先我们把主题与观察者接口定义:public interface ISubje...原创 2018-03-14 18:37:42 · 128 阅读 · 0 评论 -
单例模式
单例模式,是一种常用的软件设计模式,划分为创建型。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。下面我们介绍常见的一些单例模式的写法(基于java),包括懒汉式、恶汉式、双检锁、内部类、枚举式。恶汉式public class ActSingleton { private static...原创 2018-03-07 13:30:48 · 138 阅读 · 0 评论 -
外观模式
外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。这种模式是我们日常开发经常用到的设计模式,也就是当我们对外提供服务时只是对每个服务提供一个接口,可能这个服务内部包含着相对复杂的算法与步骤,我们需要去调用多个服务甚至更多的Dao层去实现这个服务的需求,我们无意中就 用到了这种模式。看下代码实现你就知道是什么了。子系统A的方法:...原创 2018-03-13 16:33:44 · 217 阅读 · 0 评论