Java与设计模式
他山之途
这个作者很懒,什么都没留下…
展开
-
Java与设计模式(一)设计模式概述
一设计模式的由来 设计模式从何而来 软件工程中的设计模式 二设计模式是什么what 三为什么用设计模式why 四怎样学习设计模式how 一、设计模式的由来 设计模式从何而来 在介绍设计模式的起源之前,我们先要了解一下模式的诞生与发展。与很多软件工程技术一样,模式起源于建筑领域,毕竟与只有几十年历史的软件工程相比,已经拥有几千年沉淀的建筑工程有太多值得学习和借鉴的地方。 那么模式...转载 2019-04-16 10:24:16 · 109 阅读 · 0 评论 -
Java与设计模式(十三)创建型--建造者模式
没有人买车会只买一个轮胎或者方向盘,大家买的都是一辆包含轮胎、方向盘和发动机等多个部件的完整汽车。如何将这些部件组装成一辆完整的汽车并返回给用户,这是建造者模式需要解决的问题。建造者模式又称为生成器模式,它是一种较为复杂、使用频率也相对较低的创建型模式。建造者模式为客户端返回的不是一个简单的产品,而是一个由多个部件组成的复杂产品。大概了解一下这个模型就行。 一、建造者模式概述 建造者模式是较为复杂...转载 2019-04-19 15:24:05 · 122 阅读 · 0 评论 -
Java与设计模式(十二)创建型--单例模式
1. 一、单例模式的动机 对于一个软件系统的某些类而言,我们无须创建多个实例。举个大家都熟知的例子——Windows任务管理器,我们可以做一个这样的尝试,在Windows的“任务栏”的右键弹出菜单上多次点击“启动任务管理器”,看能否打开多个任务管理器窗口?通常情况下,无论我们启动任务管理多少次,Windows系统始终只能弹出一个任务管理器窗口,也就是说在一个Windows系统中,任务管理器存在唯一...转载 2019-04-19 15:11:21 · 90 阅读 · 0 评论 -
Java与设计模式(十一)创建型--抽象工厂模式
工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问题,但由于工厂方法模式中的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销。此时,我们可以考虑将一些相关的产品组成一个“产品族”,由同一个工厂来统一生产。 一、需求 比如开发一套界面皮肤库,可以对Java桌面软件进行界面美化。为了保护版权,该皮肤库源代码不打算公开,而只向用户提供已打包为jar文件...转载 2019-04-19 15:10:50 · 130 阅读 · 0 评论 -
Java与设计模式(十)创建型--工厂方法模式
简单工厂模式虽然简单,但存在一个很严重的问题。当系统中需要引入新产品时,由于静态工厂方法通过所传入参数的不同来创建不同的产品,这必定要修改工厂类的源代码,将违背“开闭原则”,如何实现增加新产品而不影响已有代码? 一、需求 比如开发一个系统运行日志记录器(Logger),该记录器可以通过多种途径保存系统的运行日志,如通过文件记录或数据库记录,用户可以通过修改配置文件灵活地更换日志记录方式。在设计各类...转载 2019-04-16 12:51:36 · 168 阅读 · 0 评论 -
Java与设计模式(九)创建型--简单工厂模式
一、需求 比如我想开发一套图表库,该图表库可以为应用系统提供各种不同外观的图表,例如柱状图、饼状图、折线图等,那我们可以这样写。代码如下: public class Chart { private String type; // 图表类型 public Chart(String type) { this.type = type; if (type...转载 2019-04-16 12:15:56 · 200 阅读 · 0 评论 -
Java与设计模式(八)设计原则--开闭原则
一、定义 开闭原则是面向对象的可复用设计的第一块基石,它是最重要的面向对象设计原则。开闭原则由Bertrand Meyer于1988年提出,其定义如下: 开闭原则(Open-Closed Principle, OCP):一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。 在开闭原则的定义中,软件实体可以指一个软件模块、一个由多个类组成的局部结构或一个独立的类...转载 2019-04-16 11:41:30 · 95 阅读 · 0 评论 -
Java与设计模式(七)迪米特法则(最少知道原则)
一、定义 迪米特法则来自于1987年美国东北大学(Northeastern University)一个名为“Demeter”的研究项目。迪米特法则又称为最少知识原则(LeastKnowledge Principle, LKP),其定义如下: 迪米特法则(Law of Demeter, LoD):一个软件实体应当尽可能少地与其他实体发生相互作用。 如果一个系统符合迪米特法则,那么当其中某一个模块发生...转载 2019-04-16 11:35:19 · 203 阅读 · 0 评论 -
Java与设计模式(六)设计原则--接口隔离原则
一、定义 接口隔离原则定义如下: 接口隔离原则(Interface Segregation Principle, ISP):使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。 根据接口隔离原则,当一个接口太大时,我们需要将它分割成一些更细小的接口,使用该接口的客户端仅需知道与之相关的方法即可。每一个接口应该承担一种相对独立的角色,不干不该干的事,该干的事都要干...转载 2019-04-16 11:18:25 · 99 阅读 · 0 评论 -
Java与设计模式(五)设计原则--依赖倒置原则
一定义 一、定义 如果说开闭原则是面向对象设计的目标的话,那么依赖倒转原则就是面向对象设计的主要实现机制之一,它是系统抽象化的具体实现。依赖倒转原则是Robert C. Martin在1996年为“C++Reporter”所写的专栏Engineering Notebook的第三篇,后来加入到他在2002年出版的经典著作“Agile Software Development, Pri...转载 2019-04-16 10:58:13 · 96 阅读 · 0 评论 -
Java与设计模式(四)设计原则--里氏代换原则
一定义 一、定义 里氏代换原则由2008年图灵奖得主、美国第一位计算机科学女博士Barbara Liskov教授和卡内基·梅隆大学Jeannette Wing教授于1994年提出。其严格表述如下:如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1代换o2时,程序P的行为没有变化,那么类型S是类型T的子类型。这个定义比较拗口且难以理解,因此...转载 2019-04-16 10:40:13 · 141 阅读 · 0 评论 -
Java与设计模式(三)设计原则--单一职责原则
一定义 二单一职责优点 一、定义 单一职责原则是最简单的面向对象设计原则,它用于控制类的粒度大小。单一职责原则定义如下: 单一职责原则(Single Responsibility Principle, SRP):一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。 单一职责原则告诉我们:一个类不能太“累”!在软件系统中,一个类(大到模块...转载 2019-04-16 10:37:19 · 92 阅读 · 0 评论 -
Java与设计模式(二)类之间的关系
概述 一依赖关系Dependence 二关联关系Association 三聚合Aggregation 四组合Composition 五继承Generalization 六实现Implementation 七总结 概述 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。 2) 在系统中,每个类具有一定的职责,职责指的是类...转载 2019-04-16 10:28:25 · 378 阅读 · 0 评论 -
Java与设计模式(十四)创建型--原型模式
一、原型模式概述 在使用原型模式时,我们需要首先创建一个原型对象,再通过复制这个原型对象来创建更多同类型的对象。试想,如果连孙悟空的模样都不知道,怎么拔毛变小猴子呢?原型模式的定义如下: 原型模式(Prototype Pattern):使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式是一种对象创建型模式。用的比较少,了解即可 原型模式的工作原理很简单:将一个原型对象传给那...转载 2019-04-19 15:30:23 · 87 阅读 · 0 评论