
设计模式
Franco蜡笔小强
小码农
展开
-
设计模式(十三)——迭代器模式
上一篇中介绍了一种行为型设计模式——策略模式,这篇文章中介绍另外一个比较简单的行为型设计模式——迭代器模式。概念一提到迭代器模式很多人可能感觉很陌生,但是实际上,迭代器模式是所有设计模式中最简单也是最常用的设计模式,正是因为他太常用了,所以很多人忽略了他的存在。迭代器模式提供一种方法访问一个容器中各个元素,而又不需要暴露该对象的内部细节。那么,这里提到的容器是什么呢?其实就是可以包含一组对象的数据...转载 2018-04-26 16:31:43 · 251 阅读 · 0 评论 -
设计模式(十一)——建造者模式
本文主要介绍创建型模式的最后一种————建造者模式。概念建造者模式(英:Builder Pattern)是一种创建型设计模式,又名:生成器模式。GOF 给建造者模式的定义为:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。这句话说的比较抽象,其实解释一下就是:将建造复杂对象的过程和组成对象的部件解耦。用途假设现在我们是一家网游设计公司,现在我们要”抄袭”梦幻西游这款游戏,...转载 2018-04-26 16:26:53 · 352 阅读 · 0 评论 -
设计模式(十二)——建造者模式的实践
我不打算深入介绍设计模式的细节内容,因为有很多这方面的文章和书籍可供参考。本文主要关注于告诉你为什么以及在什么情况下你应该考虑使用建造者模式。然而,值得一提的是本文中的模式和GOF中的提出的有点不一样。那种原生的模式主要侧重于抽象构造的过程以达到通过修改builder的实现来得到不同的结果的目的。本文中主要介绍的这种模式并没有那么复杂,因为我删除了不必要的多个构造函数、多个可选参数以及大量的set...转载 2018-04-26 16:13:00 · 235 阅读 · 0 评论 -
设计模式--FactoryMethod模式
直接上代码:package framework;public abstract class Factory { public final Product create(String owner) { Product p = createProduct(owner); registerProduct(p); return p; }...原创 2018-04-04 18:32:17 · 145 阅读 · 0 评论 -
设计模式--TemplateMethod模式
直接代码:public abstract class AbstractDisplay { // 抽象类AbstractDisplay public abstract void open(); // 交给子类去实现的抽象方法(1) open public abstract void print(); // 交给子类去实现的抽象方法(2) print ...原创 2018-04-03 18:08:41 · 161 阅读 · 0 评论 -
设计模式--Adapter模式
适配器模式将现有接口转化为客户类所期望的接口,实现了对现有类的复用,它是一种使用频率非常高的设计模式,在软件开发中得以广泛应用,在Spring等开源框架、驱动程序设计(如JDBC中的数据库驱动程序)中也使用了适配器模式。 1. 主要优点 无论是对象适配器模式还是类适配器模式都具有如下优点: (1) 将目标类和适配者类解耦,通过引入一个适配器类来重用现有的适配者...原创 2018-03-26 16:55:50 · 264 阅读 · 0 评论 -
设计模式--Iterator模式
直接代码:书架小例子public class Book { private String name; public Book(String name) { this.name = name; } public String getName() { return name; }}public interface Iterato...原创 2018-03-14 18:28:51 · 177 阅读 · 0 评论 -
设计模式(十)——适配器模式
结构型设计模式结构型模式(Structural Pattern)描述如何将类或者对象结合在一起形成更大的结构,就像搭积木,可以通过简单积木的组合形成复杂的、功能更为强大的结构。结构型模式可以分为类结构型模式和对象结构型模式:类结构型模式关心类的组合,由多个类可以组合成一个更大的 系统,在类结构型模式中一般只存在继承关系和实现关系。对象结构型模式关心类与对象的组合,通过关联关系使得在一 个类中定义另...转载 2017-09-26 21:29:18 · 367 阅读 · 0 评论 -
设计模式(九)——代理模式(Proxy)
代理模式是常用的结构型设计模式之一,当无法直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象与代理对象需要实现相同的接口。根据代理模式的使用目的不同,代理模式又可以分为多种类型,例如保护代理、远程代理、虚拟代理、缓冲代理等,它们应用于不同的场合,满足用户的不同需求。1 代理模式概述近年来,代购已逐步成为电转载 2017-09-26 21:08:49 · 1840 阅读 · 0 评论 -
设计模式(八)——观察者模式
观察者模式是设计模式中的“超级模式”,其应用随处可见,在之后几篇文章里,我将向大家详细介绍观察者模式。 “红灯停,绿灯行”,在日常生活中,交通信号灯装点着我们的城市,指挥着日益拥挤的城市交通。当红灯亮起,来往的汽车将停止;而绿灯亮起,汽车可以继续前行。在这个过程中,交通信号灯是汽车(更准确地说应该是汽车驾驶员)的观察目标,而汽车是观察者。随着交通信号灯的变化,汽车的行为转载 2017-09-26 18:35:13 · 646 阅读 · 0 评论 -
设计模式(七)——策略模式
介绍一个比较简单的行为型设计模式——策略模式。概念学习过设计模式的人大概都知道Head First设计模式这本书,这本书中介绍的第一个模式就是策略模式。把策略模式放在第一个,笔者认为主要有两个原因:1、这的确是一个比较简单的模式。2、这个模式可以充分的体现面向对象设计原则中的封装变化、多用组合,少用继承、针对接口编程,不针对实现编程等原则。策略模式(Strategy Pattern转载 2017-09-26 09:14:36 · 329 阅读 · 0 评论 -
设计模式(六)——工厂模式总结
分类工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。工厂模式可以分为三类:1)简单工厂模式(Simple Factory)2)工厂方法模式(Factory Method)3)抽象工厂模式(Abstract Factory)这三种模式从上到下逐步抽象,并且更具一般性。GOF在《设计模式》一书中将工厂模式分为两类:工转载 2017-09-17 14:03:08 · 396 阅读 · 0 评论 -
设计模式(五)——抽象工厂模式
在设计模式(三)——工厂方法模式和设计模式(四)——JDK中的那些工厂方法中介绍了工厂方法模式。本文将介绍另外一种工厂模式——抽象工厂模式。工厂模式的简单回顾在介绍了简单工厂模式和工厂方法模式之后,相信很多人对工厂模式(如果单独提到工厂模式,即包括简单工厂模式、工厂方法模式及本文即将介绍的抽象工厂模式)的思想都有了一定的理解。这里我们在简单回顾一下。工厂模式的主要功能就是帮助我们实例化转载 2017-09-17 13:38:12 · 434 阅读 · 0 评论 -
设计模式(四)——JDK中的那些工厂方法
在设计模式(五)——工厂方法模式中介绍了工厂方法模式。本文通过介绍JDK源码中用到的工厂方法,在上篇文章的基础上深入理解一下工厂方法。再谈工厂方法在设计模式(五)——工厂方法模式中用整篇介绍了工厂方法模式。为什么要再谈呢?因为很多人走进了一个误区。认为工厂方法模式就是要严格包含抽象产品、具体产品、抽象工厂和具体工厂等角色。其实并不是这样的。有时候也会创建不使用多态性创建对象的工厂方转载 2017-09-17 11:50:22 · 2946 阅读 · 0 评论 -
设计模式(三)——工厂方法模式
在设计模式——简单工厂模式文章中介绍了简单工厂模式,通过一个例子讲述了如何使用简单工厂模式。同时也留下了一个问题,那就是简单工厂模式破坏了开放-封闭原则。那么本文将介绍另外一种设计模式——工厂方法模式。主要介绍其概念、用途、实现方式、以及优缺点等。概念工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者转载 2017-09-14 19:27:12 · 329 阅读 · 0 评论 -
设计模式(二)——简单工厂模式
概念简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。值得注意的是,简单工厂模式并不属于23种GOF设计模式之一。但是他是抽象工厂模式,工厂方法模式的基础,并且也有广泛的应用。用途在转载 2017-09-14 18:49:35 · 358 阅读 · 0 评论 -
序列化对单例的破坏
单例模式,是设计模式中最简单的一种。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。关于单例模式的使用方式,可以阅读单例模式的七种写法但是,单例模式真的能够实现实例的唯一性吗?答案是否定的,很多人都知道使用反射可以破坏单例模式,除了反射以外,使用序列化与反序列转载 2017-09-12 22:04:15 · 385 阅读 · 0 评论 -
设计模式(一)--单例模式
概念单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式。定义为:保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式一般体现在类声明中,单例的类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。用途单例模式有以下两个优点:在内...原创 2017-09-12 21:07:19 · 784 阅读 · 0 评论 -
设计模式-概述;面向对象基本原则
在软件工程中,设计模式(design pattern)是对软件设计中普遍存在的各种问题,所提出的解决方案。设计模式并不是固定的一套代码,而是针对某一特定问题的具体解决思路与方案。可以认为是一种最佳实践,因为他是无数软件开发人员经过长时间的实践总结出来的。设计模式的六大原则1、开闭原则(Open Close Principle)开闭原则就是说对扩展开放,对修改关闭。在程序需要进行原创 2017-09-12 17:30:09 · 484 阅读 · 0 评论