设计模式入门笔记
个人的设计模式学习笔记
syrdbt
这个作者很懒,什么都没留下…
展开
-
简单工厂设计模式
1.概述简单工厂模式又叫做静态工厂方法(Static Factory Method)模式,不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。2. 示例程序简单工厂模式要有一个工厂类,这里其名为Factory。一个产品接口类,IProduct类。一...原创 2019-04-28 19:44:43 · 447 阅读 · 0 评论 -
Java 中 Holder 方式 和 枚举方式 实现单例模式
Holder 方式 和 枚举方式可以线程安全的实现单例模式。Holder 方式借助于类加载的初始化阶段<clinit>()方法是同步方法。枚举方式是因为枚举类型不能继承且只能被实例化一次。1.Holder 方式实现单例模式类加载的初始化阶段<clinit>()方法是同步方法,在类中设置一个静态类,将唯一实例放在静态类中,第一次访问实例...原创 2019-06-26 18:49:10 · 3849 阅读 · 0 评论 -
策略设计模式(Strategy)
策略设计模式(Strategy):可以整体的替换一个算法的实现部分,能够整体的替换算法,能让我们轻松地用不同方法解决同一个问题。1. 示例程序举一个收银的例子,普通用户打95折,会员打8折,超级会员打6折。如果在一个函数里面去解决这些问题,那么增加会员类型和折扣变化的时候会导致代码臃肿,难以维护。可以使用策略模式去解决这个问题。策略模式只适用管理一组同类型的算法,并且这些算...原创 2019-06-02 23:03:25 · 7156 阅读 · 2 评论 -
多例设计模式
1.概述多例设计模式,限制本对象的实例个数。特点:构造方法私有化,类内部提供几个实例化对象,然后通过static方法获得。2.示例程序构造方法私有化,外部类就不能再创建该类的实例,这样才能保证本对象的实例个数。 private MyDuoLi(String value) { this.value = value; }类内部提供几个实例...原创 2019-04-28 20:04:38 · 401 阅读 · 0 评论 -
代理设计模式(Proxy)
1.概述在面向对象编程的过程中,“本人”和“代理人”都是对象。如果“本人”对象太忙的了,有些工作自己无法亲自完成,就将其交给“代理人”对象负责。在处理请求的时候“代理人”会尽量处理客户的请求,只有自己不能处理时,才会把工作交给“本人”。例如:可以在“代理人”判断请求的是否合法和处理异常等,“本人”要实现线程同步,则可以在“代理人”中实现同步,具体的请求处理在交给“本人”处理。2.实...原创 2019-04-20 21:36:28 · 2263 阅读 · 1 评论 -
建造者设计模式(Builder)
1.概述建造者(Builder)设计模式用于组装具有复杂结构的实例。在构建一个复杂实例的时候,我们很难一气呵成,我们首先把实例的各个部分建造出来,然后分阶段把它们组装起来。2.示例程序一个使用Builder设计模式来编写“文档的程序”的例子,文档的结构有:一个标题、几个字符串、条目项目。示例程序中有如下四个类:Builder类、Director类、TextBuilder类、HT...原创 2019-04-20 19:31:29 · 398 阅读 · 0 评论 -
工厂方法设计模式(Factory Method)
1.概述用Template Method设计模式来构建生成实例的工厂就是工厂方法(Factory Method)设计模式。在工厂方法(Factory Method)设计模式,父类决定实例的生成方式,但不决定要生成的具体的类,具体的处理全部交给子类负责,这样就可以将生成实例的框架(framework)和负责生成实例的类解耦。2.代码实现首先要创建两个包,一个framework包,...原创 2019-04-19 19:07:44 · 305 阅读 · 0 评论 -
原型设计模式(Prototype)
1.概述原型(Prototype)设计模式用于处理“需要在不指定类名的前提下生成实例的情况”,它是通过实例原型,实例模型来生成新的实例。在如下情况下我们就不能根据类来生成实例,而要根据现有的实例来生成新的实例:1.对象种类繁多,无法将它们整合到一个类中。2.难以根据类生成实例时:在想生成一个和之前用户通过操作所创建的实例完全一样的实例的时候,我们会事先将用户通过操作所创建出的...原创 2019-04-19 21:54:24 · 314 阅读 · 0 评论 -
适配器设计模式(Adapter)
1.概述适配器(Adapter)设计模式用于解决现有的程序无法直接使用,需要做适当的变换才能使用的情况,这种用于填补“现有程序”和“所需程序”之间的差异就是适配器。例:你的电脑充电器就是一个适配器,你的电脑需要几十伏直流的电,而我们家庭常用是220V的交流电,这就需要你的电脑充电器充当适配器,电脑充电器用于填补“220V的交流电”和“电脑所需几十伏直流的电”之间的差异。适配器设计模式...原创 2019-04-19 18:25:05 · 383 阅读 · 0 评论 -
迭代器设计模式(Iterator)
1.概述迭代器(Iterator)设计模式用于在数据集合中按照顺序去遍历,Java的List集合和Set集合都支持迭代器。迭代器(Iterator)设计模式需要有:一个迭代器(Iterator)接口。 一个具体的迭代器(Concretelterator)实现迭代器(Iterator)接口。 Aggregate(集合)创建定义迭代器(Iterator)接口。 ConcreteA...原创 2019-04-14 17:12:24 · 685 阅读 · 0 评论 -
模板方法设计模式(Template Method)
1.概述组成模板的方法被定义在父类中,由于这些方法是抽象方法,在父类中无法查看这些方法的具体实现,唯一可以知道的就是父类如何调用这些方法的。这种在父类中定义处理流程的框架,在子类中实现具体处理的模式就是模板方法(Template Method)设计模式。举一个例子:学生都需要去上课,其上课的具体流程是上课、听课、下课,但是不同类学生听课(上课、下课)的具体内容不同,不过它们的流程相同,即...原创 2019-04-14 15:57:30 · 309 阅读 · 0 评论 -
单例模式(Singleton)学习总结
1. 单例模式(Singleton)简介单例模式:一个类只能生成一个实例,这个实例由该类自己生成。主要特点:构造函数是 private的,为了禁止外部调用单例类的构造函数,如果在单例类的外部使用去创建(new)单例类的实例会出现编译错误。通常通过单例类的getInstance()方法获得单例类的唯一实例,getInstance()这个方法名不强制、不过通常情况下都是这样命名。...原创 2019-03-30 16:35:46 · 256 阅读 · 0 评论