WHH

MY BLOG

扩展系统功能–装饰模式

定义:动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。

装饰模式可以在不改变一个对象本身功能的基础上给对象增加额外的功能。装饰模式是一种替代继承的技术,它通过一种无须定义子类的方式来给对象动态增加职责,使用对象之间的关联关系取代类之间的继承关系。在装饰模式中引入了装饰类,在装饰类中既可以调用待装饰的原有类的方法,还可以增加新的方法,以扩充原有类的功能。

举例:

阅读全文 »

下载配置相关软件

配置自定义Docker镜像,镜像系统为了省事直接用CentOS,直接在使用命令下载:

1
docker install centos

需要下载JRE和Tomcat,Jre在Oracle官网下载Jre8和Tomcat官网下载。

Jre下载解压后不需要做相应改动。
Tomcat在解压后,删除 webroot/ROOT 下所有文件。修改 **conf/server.xml**,在Host节点下添加 ** <Context docBase="/home/webdata/webroot/manage.war" path="" reloadable="true" /> ** 。manage.war表示这次配置的项目。

阅读全文 »

树形结构的处理–组合模式

组合多个对象形成树形结构以表示具有“整体—部分”关系的层次结构。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性,组合模式又可以称为“整体—部分”(Part-Whole)模式,它是一种对象结构型模式。

组合模式中,使得客户端看来单个对象和对象的组合是同等的。换句话说,某个类型的方法同时也接受自身类型作为参数。

组合模式UML如图所示:

阅读全文 »

项目中常用SpringMVC+Spring+Mybatis搭建项目。各个配置讲解。

maven构建项目

步骤:

  1. 通过maven(maven-archetype-webapp)创建空白项目
  2. 添加所需要的目录
  3. 配置maven使用的相关插件
  • 使用maven-archetype-webapp可以快速创建web目录结构项目,省去自己创建相关目录
    阅读全文 »

处理多维度变化–桥接模式

将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。

桥接模式用一种巧妙的方式处理多层继承存在的问题,用抽象关联取代了传统的多层继承,将类之间的静态继承关系转换为动态的对象组合关系,使得系统更加灵活,并易于扩展,同时有效控制了系统中类的个数。

错误示范:
要设计武器,要有基本武器,还有附魔武器。

阅读全文 »

不兼容结构的协调–适配器模式

适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。

当客户类调用适配器的方法时,在适配器类的内部将调用适配者类的方法,而这个过程对客户类是透明的,客户类并不直接访问适配者类。因此,适配器让那些由于接口不兼容而不能交互的类可以一起工作。适配器的特点在于兼容。

  • Target是用户使用的目标类
  • Adaptee是需要适配的第三方类
  • Adapter是适配器类
    阅读全文 »

建造者模式

创建一个产品时,有时产品有不同的组成成分,在其组成成分没创建完成之前,改产品是不可使用的。使用建造者模式,通过创建所有产品内部零件,组装完成后返回给用户。

例子:
举例设计LOL角色,角色包含皮肤、技能、属性、性别

阅读全文 »

原型模式

原型模式要求对象实现一个可以“克隆”自身的接口,这样就可以通过复制一个实例对象本身来创建一个新的实例。这样一来,通过原型实例创建新的对象,就不再需要关心这个实例本身的类型,只要实现了克隆自身的方法,就可以通过这个方法来获取新的对象,而无须再去通过new来创建。

原型模式相对于工厂模式而言,本身就是一个工厂,不同的是,工厂模式是直接创建一个新实例,而原型模式是克隆本身实例生成一个相似而完全不同的新实例,在内存中拥有新的地址,且每个克隆对象都是相互独立的。

阅读全文 »

单例模式概念

  • 有且只有一个实例
  • 必须自行创建这个实例
  • 必须自行向整个系统提供这个实例

单例设计

单例的创建一般分为 饿汉式单例懒汉式单例

饿汉式单例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class EagerSingleton {
//自己创建的实例
private static EagerSingleton singleton = new EagerSingleton();

/**
* 私有构造函数,不允许外部创建
*/
private EagerSingleton() {
}

/**
* 对外提供当前实例
* @return
*/
public static EagerSingleton getInstance() {
return singleton;
}
}
阅读全文 »

抽象工厂概念

抽象工厂相对工厂方法,可以创建一个产品族,而不是单一的产品。也就是在工厂方法上添加了创建其他产品方法。

如图:

  • SeasonFactory:季节工厂
  • SpringFactory:春天工厂
  • SummerFactory:夏天工厂
  • Clothes:衣服
  • Coat:上衣
  • Trousers:裤子
    Java代码如下:
    阅读全文 »
0%