设计模式
風逍遥
做牛做码
展开
-
简述设计模式(七)——装饰模式
为何使用装饰模式在软件开发过程中,当对系统扩展功能时,希望复用当前系统中已存在现存组件,并对其进行动态扩展以实现新功能。此时,在不修改现存组件的情况下,同时对这些组件进行复用扩展。举个例子,手机本身具备照相功能,但画质感人,爱美的人都希望在拍照的同时具有美化效果,因此,扩展出滤镜、瘦脸等功能。针对这个例子,来看看是否采用装饰模式的方式之间的区别:不采用装饰模式;重复创建类,会导致类爆炸;...原创 2020-05-06 19:28:51 · 233 阅读 · 0 评论 -
简述设计模式(六)——桥接模式
问题当一个类存在多个维度,并不同维度的改变都会衍生出一个新的子类。举个例子:形状类,其下有不同的图形,如三角形、正方形、圆形等等;此外,这些不同的形状还有不同颜色。如果使用传统的继承的方式的结构是这样的:使用这种结构实现,存在以下缺点:可扩展性差,存在类爆炸问题,增加维护成本;类的重复度高,违背单一职责原则;**解决方案:**桥接模式。那么接下来先来了解桥接模式。桥接模式桥接模...原创 2020-05-05 23:23:54 · 357 阅读 · 0 评论 -
简述设计模式(五)——适配器模式
什么是适配器模式?先举个现实生活中的案例:手机充电。因为手机充电接口(目标接口)和插座接口(适配者)不匹配,不能够直接充电,就需要使用到充电器(适配器)进行接口转换。在软件设计中也存在类似的情况:在开发某个业务功能的组件,已在其它项目中存在,但因为与当前系统的接口规范不匹配而无法直接使用,如果重新开发会导致成本很高,使用适配器模式就可以很好地解决此类问题。适配器模式的定义:将一个类的接口转换...原创 2020-05-04 20:00:46 · 318 阅读 · 0 评论 -
简述设计模式(四)——建造者模式
建造者模式,是一种创建型模式。它将复杂对象的属性和构建行为分离开,使用抽象方式实现不同的构造过程,以此构造出不同表现(属性)的对象。建造者模式是一步一步创建一个复杂的对象,它允许客户端只通过指定复杂对象的类型和内容,无需知道内部的具体构建细节,就可以构建对象。建造者模式的四个角色产品角色:一个具体的产品对象;抽象建造者:定义构建对象过程的接口或抽象类;具体建造者:实现抽象建造者,构建对...原创 2020-05-03 09:44:49 · 360 阅读 · 0 评论 -
简述设计模式(三)——原型模式
原型模式:用一个已经创建的实例作为原型,将对象作为一个原型来创建一个和新的一模一样的对象。在这里,原型实例指定了要创建的对象。用这种方式创建对象较高效,且无须知道对象创建的细节。Java提供了对象的clone()方法,使得原型模式的实现非常简单。原型模式的实现类型有:浅拷贝和深拷贝。1、浅拷贝对象的成员变量类型可以是基本数据类型,也可以是引用类型;进行对象拷贝时,对基本数据类型的成员变量的值...原创 2020-05-02 08:30:58 · 207 阅读 · 0 评论 -
简述设计模式(二)——工厂方法和抽象工厂模式
1、简单工厂简单工厂模式是由一个工厂对象决定创建哪一种产品类的实例。使用工厂类封装了创建产品类实例对象的行为,用户只需告诉工厂类获取哪个实例,工厂类创建并返回用户所需的实例。代码实现//产品接口public interface Fruit { public void show();}//产品1public class Apple implements Fruit { ...原创 2020-05-01 09:19:05 · 215 阅读 · 0 评论 -
简述设计模式(一)——单例模式
单例模式单例模式,保证整个软件系统中,对某个类只能创建一个对象实例,并且该类只提供一个取得其对象实例的方法。单例模式的实现方式有:立即加载(饿汉式):即项目启动时即加载;懒加载(懒汉式):在项目使用到时才进行加载;在实现单例模式时,需要考虑线程安全问题,因为线程不安全情况下会生成多个对象,就失去单例模式的效果;实现方式1、饿汉式静态变量方式实现。给该静态变量赋值的方式可以有两种...原创 2020-04-30 08:38:41 · 168 阅读 · 0 评论