Java教程:状态模式(详解版) 在软件开发过程中,应用程序中的部分对象可能会根据不同的情况做出不同的行为,我们称这种对象为有状态对象,并将影响对象行为动态变化的属性称为状态。在一个有状态的对象与外部事件交互时,其内部状态就会发生变化,行为也随之发生变化。人们都有喜怒哀乐的时候,不同的情绪有不同的表现,当然外部世界也会影响其情2021-06-29 18:32Java基础入门Java学习心得Java教程:中介者模式(详解版) 在现实生活中,常常会出现好多对象之间存在复杂的交互关系,这种交互关系常常是“网状结构”,它要求每个对象都必须知道它需要交互的对象。例如,每个人必须记住他(她)所有朋友的电话;而且,朋友中如果有人的电话修改了,他(她)必须让其他所有的朋友一起修改,这叫作“牵一发而动全身”,非常复杂。2021-06-29 15:52Java基础入门Java学习心得Java教程:观察者模式(Observer模式)详解 在现实世界中,许多对象并不是独立存在的,其中一个对象的行为发生改变可能会导致一个或者多个其他对象的行为也发生改变。例如,某种商品的物价上涨时会导致部分商家高兴,而消费者伤心;还有,当我们开车到交叉路口时,遇到红灯会停,遇到绿灯会行。这样的例子还有很多,例如,股票价格与股民、微信公众号与微信用2021-06-29 15:52Java基础入门Java学习心得Java教程:责任链模式(职责链模式)详解 在现实生活中,一个事件需要经过多个对象处理是很常见的场景。例如,采购审批流程、请假流程等。公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但每个领导能批准的天数不同,员工必须根据需要请假的天数去找不同的领导签名,也就是说员工必须记住每个领导的姓名、电话和地址等信息,这无疑增加了难2021-06-29 15:28Java基础入门Java学习心得Java教程:命令模式(详解版) 在软件开发系统中,“方法的请求者”与“方法的实现者”之间经常存在紧密的耦合关系,这不利于软件功能的扩展与维护。例如,想对方法进行“撤销、重做、记录”等处理都很不方便,因此“如何将方法的请求者与实现者解耦?”变得很重要,命令模式就能很好地解决这个问题。2021-06-29 14:51Java基础入门Java学习心得行为型模式概述(行为型模式的分类) 行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。2021-06-28 11:57Java基础入门Java学习心得Java教程:策略模式(策略设计模式)详解 在现实生活中常常遇到实现某种目标存在多种策略可供选择的情况,例如,出行旅游可以乘坐飞机、乘坐火车、骑自行车或自己开私家车等,超市促销可以釆用打折、送商品、送积分等方法。2021-06-28 11:57Java基础入门Java学习心得Java教程:结构型模式应用实验 结构型模式(StructuralPattern)描述如何将类或者对象结合在一起形成更大的结构,就像搭积木,可以通过简单积木的组合形成复杂的、功能更为强大的结构。结构型模式可以分为类结构型模式和对象结构型模式,也可分为代理模式(Proxy)、适配器模式(Adapter)、桥接模式(Bridge2021-06-28 11:05Java基础入门Java学习心得Java教程:组合模式(详解版) 在现实生活中,存在很多“部分-整体”的关系,例如,大学中的部门与学院、总公司中的部门与分公司、学习用品中的书与书包、生活用品中的衣服与衣柜、以及厨房中的锅碗瓢盆等。在软件开发中也是这样,例如,文件系统中的文件与文件夹、窗体程序中的简单控件与容器控件等。对这些简单对象与复合对象的处理,如果用组2021-06-28 11:04Java基础入门Java学习心得模板方法模式(模板方法设计模式)详解 在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。2021-06-28 11:01Java基础入门Java学习心得享元模式(详解版) 在面向对象程序设计过程中,有时会面临要创建大量相同或相似对象实例的问题。创建那么多的对象将会耗费很多的系统资源,它是系统性能提高的一个瓶颈。2021-06-25 11:40Java基础入门Java学习心得外观模式(Facade模式)详解 在现实生活中,常常存在办事较复杂的例子,如办房产证或注册一家公司,有时要同多个部门联系,这时要是有一个综合部门能解决一切手续问题就好了。2021-06-25 11:39Java基础入门Java学习心得装饰器模式(装饰设计模式)详解 上班族大多都有睡懒觉的习惯,每天早上上班时间都很紧张,于是很多人为了多睡一会,就会用方便的方式解决早餐问题。有些人早餐可能会吃煎饼,煎饼中可以加鸡蛋,也可以加香肠,但是不管怎么“加码”,都还是一个煎饼。在现实生活中,常常需要对现有产品增加新的功能或美化其外观,如房子装修、相片加相框等,都是装2021-06-25 11:36Java基础入门Java学习心得桥接模式(Bridge模式)详解 在现实生活中,某些类具有两个或多个维度的变化,如图形既可按形状分,又可按颜色分。如何设计类似于Photoshop这样的软件,能画不同形状和不同颜色的图形呢?如果用继承方式,m种形状和n种颜色的图形就有m×n种,不但对应的子类很多,而且扩展困难。2021-06-25 11:35Java基础入门Java学习心得适配器模式(Adapter模式)详解 在现实生活中,经常出现两个对象因接口不兼容而不能在一起工作的实例,这时需要第三者进行适配。例如,讲中文的人同讲英文的人对话时需要一个翻译,用直流电的笔记本电脑接交流电源时需要一个电源适配器,用计算机访问照相机的SD内存卡时需要一个读卡器等。2021-06-25 11:35Java基础入门Java学习心得代理模式(代理设计模式)详解 结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。2021-06-24 10:56面向对象Java基础入门Java学习心得建造者模式(Bulider模式)详解 在软件开发过程中有时需要创建一个复杂的对象,这个复杂对象通常由多个子部件按一定的步骤组合而成。例如,计算机是由CPU、主板、内存、硬盘、显卡、机箱、显示器、键盘、鼠标等部件组装而成的,采购员不可能自己去组装计算机,而是将计算机的配置要求告诉计算机销售公司,计算机销售公司安排技术人员去组装计算2021-06-24 10:56面向对象Java基础入门Java学习心得创建型模式应用实验 创建型模式(CreationalPattern)的主要特点是将对象的创建与使用分离,根据对象的创建与组合方式的不同,创建型模式可分为单例(Singleton)模式、原型(Prototype)模式、工厂方法(FactoryMethod)模式、抽象工厂(AbstractFactory)模式和建造2021-06-24 10:56面向对象Java基础入门Java学习心得抽象工厂模式(详解版) 前面介绍的工厂方法模式中考虑的是一类产品的生产,如畜牧场只养动物、电视机厂只生产电视机、计算机软件学院只培养计算机软件专业的学生等。2021-06-24 10:55Java基础入门Java学习心得关于工厂方法模式(详解版) 在现实生活中社会分工越来越细,越来越专业化。各种产品有专门的工厂生产,彻底告别了自给自足的小农经济时代,这大大缩短了产品的生产周期,提高了生产效率。同样,在软件开发中能否做到软件对象的生产和使用相分离呢?能否在满足“开闭原则”的前提下,客户随意增删或改变对软件相关对象的使用呢?这就是本节要讨2021-06-24 10:55Java基础入门Java学习心得Java教程——简单工厂模式 现实生活中,原始社会自给自足(没有工厂),农耕社会小作坊(简单工厂,民间酒坊),工业革命流水线(工厂方法,自产自销),现代产业链代工厂(抽象工厂,富士康)。我们的项目代码同样是由简到繁一步一步迭代而来的,但对于调用者来说,却越来越简单。2021-06-23 11:50面向对象Java基础入门Java学习心得原型模式(原型设计模式)详解原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。例如,Windows操作系统的安装通常较耗时,如果复制就快了很多。在生活中复2021-06-23 11:49面向对象Java基础入门Java学习心得单例模式(单例设计模式)详解 创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是“将对象的创建与使用分离”。这样可以降低系统的耦合度,使用者不需要关注对象的创建细节,对象的创建由相关的工厂来完成。就像我们去商场购买商品时,不需要知道商品是怎么生产出来一样,因为它们由专门的厂商生产。2021-06-23 11:47面向对象Java基础入门Java学习心得合成复用原则——面向对象设计原则 合成复用原则(CompositeReusePrinciple,CRP)又叫组合/聚合复用原则(Composition/AggregateReusePrinciple,CARP)。它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。 如果要使用继承关2021-06-23 11:46面向对象Java基础入门Java学习心得迪米特法则——面向对象设计原则 前几节分别详细介绍了面向对象设计原则中的开闭原则、里氏替换原则、依赖倒置原则、单一职责原则和接口隔离原则,本节将详细介绍迪米特法则。2021-06-23 11:44面向对象Java基础入门Java学习心得里氏替换原则——面向对象设计原则里氏替换原则(LiskovSubstitutionPrinciple,LSP)由麻省理工学院计算机科学实验室的里斯科夫(Liskov)女士在1987年的“面向对象技术的高峰会议”(OOPSLA)上发表的一篇文章《数据抽象和层次》(DataAbstractionandHierarchy)里提出来的,她2021-06-22 11:21面向对象Java基础入门Java学习心得依赖倒置原则——面向对象设计原则 依赖倒置原则(DependenceInversionPrinciple,DIP)是ObjectMentor公司总裁罗伯特·马丁(RobertC.Martin)于1996年在C++Report上发表的文章。 依赖倒置原则的原始定义为:高层模块不应该依赖低层模块,两者都应该依赖其抽象;2021-06-22 11:21面向对象Java基础入门Java学习心得单一职责原则——面向对象设计原则 单一职责原则(SingleResponsibilityPrinciple,SRP)又称单一功能原则,由罗伯特·C.马丁(RobertC.Martin)于《敏捷软件开发:原则、模式和实践》一书中提出的。这里的职责是指类变化的原因,单一职责原则规定一个类应该有且仅有一个引起它变化的原因,否则类应2021-06-22 11:12面向对象Java基础入门Java学习心得接口隔离原则——面向对象设计原则 接口隔离原则(InterfaceSegregationPrinciple,ISP)要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法。2021-06-22 11:11Java基础入门Java学习心得开闭原则——面向对象设计原则 在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据7条原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。我们将在下面的几节中依次来介绍这7条原则,本节首先介绍开闭原则。2021-06-22 10:12Java基础入门Java学习心得