装饰器模式
介绍装饰器模式(Decorator Pattern),又称包装器模式(Wrapper Pattern):允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。
类图
类图说明
抽象构件(Shape):可以是一个接口或者抽象类,充当被装饰类的原始对象,规定了被装饰类的行为。
具体构件(Circle、Rrctangle)角色:实现抽象构件,通过装饰角色为其添加一些职责。
抽象装饰(ShapeDecorator)角色:继承抽象构件,并包含具体构件的实例,可以通过其子类扩展具体构件的功能。
具体装饰(RedShapeDecorator)角色:实现抽象装饰的相关方法,并给具体构件对象添加附加的责任。
代码示例抽象构件Shape接口
12345public interface Shape { void draw();}
具体构件Circle类,实现了Shape接口
123456public class Circl ...
建造者模式
介绍建造者模式又叫创建者模式(Builder Pattern),是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。创建者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子类继承或者重载的方式,动态的创建具有复合属性的对象。
适用场景
隔离复杂对象的创建和使用,相同的方法,不同的执行顺序,产生不同事件结果。
多个配件都可以装配到一个对象中,但产生不同的运行结果。
产品类非常复杂或者产品类因为调用顺序不同而产生不用结果。
初始化一个对象时,参数过多,或者很多参数具有默认值。
需要生成的产品对象有复杂的内部结构,这些产品对象具有共性。
主要作用
在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。
用户只需要给出指定复杂对象的类型和内容。
建造者模式负责按顺序创建复杂对象(把内部的建造过程和细节隐藏起来)。
类图
类图讲解
指挥者(Director)直接和客户(Client)进行需求沟通。
沟通后指挥者将客户创建产品的需求划分为各个部件的建造请求(Builder)。
将各个部件的建造请求委派到具体的建造者(ConcreteBui ...
适配器模式
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能,让原来不兼容的两个接口协同工作。
定义让原来不兼容的两个接口协同工作。
分类
对象适配器
类适配器
接口适配器
角色
目标接口:Target,该角色把其他类转换为我们期望的接口
被适配者:Adaptee 原有的接口,也是希望被改变的接口
适配器: Adapter, 将被适配者和目标接口组合到一起的类
对象适配器使用组合的方式,Target接口是我们需要操作的接口,我们的目标也是想让原有的接口(Adaptee )变成我们想要的接口(Target),适配器类(Adapter)需要实现Target接口,Adapter类里面组合了原有的接口(Adaptee ),相当于我们在使用Target的时候,间接的通过适配器操作了原来的接口,而又没改动原来的接口,也可以根据实际业务包装原来的接口来适应我们的业务,这样就只改动我们自己写的适配器类,没有改动到原来的接口,也符合开闭原则。
类图
代码实现 ...
工厂模式
工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。一般来说,xxxxxAdapter和xxxxx
工厂模式有分为三种:
简单工厂
工厂方法
抽象工厂
简单工厂拿手机为例,手机有很多品牌,比如华为、小米、苹果等。
首先定义一个手机的接口
1234public interface Phone { //手机品牌 void brand();}
再定义两种品牌的手机,分别实现手机的接口
123456789101112131415public class HuaWeiPhone implements Phone { @Override public void brand() { System.out.println("华为手机..."); }}public class X ...
单例模式
单例模式,顾名思义就是只有一个实例,并且它自己负责创建自己的对象,这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。单例模式的写法就只有3个步骤:
构造器私有化。
定义一个私有的类的静态实例。
提供一个公有的获取实例的静态方法。
单例模式虽然看似简单,但是要想写好一个完美的单例模式,其中也有非常多的细节。
懒汉式写法一普通写法
1234567891011121314151617181920212223public class Singleton { //提供一个静态的该类的属性 private static Singleton singleton; //构造器私有化,防止外面可以直接new对象 private Singleton(){ System.out.println("我被new出来了"); //每生成一个实例就打印这句话,便于测试。 } /** * 提供一个获取实例的方法 * @title: 获取Singleton的实例对象 * @author: guyou * ...
利用Hexo搭建自己的博客
利用Hexo在本地搭建博客Hexo简介Hexo是一款基于Node.js的静态博客框架,依赖少易于安装使用,可以方便的生成静态网页托管在GitHub上,是搭建博客的首选框架。大家可以进入hexo官网进行详细查看,因为Hexo的创建者是台湾人,对中文的支持很友好,可以选择中文进行查看。
安装GitGit是目前世界上最先进的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。也就是用来管理你的hexo博客文章,上传到GitHub的工具。Git非常强大,我觉得建议每个人都去了解一下。尚硅谷的Git教程视频非常好,大家可以了解一下。Git教程
windows:到git官网上下载,Download git,下载后会有一个Git Bash的命令行工具,以后就用这个工具来使用git。
安装好以后用git --version查看版本,出现版本号说明已经安装成功。
随便在计算机任何地方点击鼠标右键会出现以下选项
安装node.jsHexo是基于nodeJS编写的,所以需要安装一下nodeJs和里面的npm工具。node.js所有版本下载地址 node.js,根据自己需要下载对应的版本 ...