1.简单工厂模式(静态工厂方法模式) 抽象实例: public interface People { void talk(); } 具体实例: public class Doctor implements People { public void talk() { System.out.println("我是医生"); } } public class Teacher implements People { public void talk() { System.out.println…
一.简介 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建.这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象. 二.主要特征 1.单例类只能有一个实例(即单例类不能被外部实例化---单例类的构造方法由private修饰). 2.单例类必须自己创建自己的实例,并且供外部调用(向外部暴露调用其…
1.定义 是一种对象构建的设计模式,它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象. 产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量.产品类可以是一个具体的类,也可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成. 抽象建造者:引入抽象建造者的目的,是为了将建造的具体过程交与它的子类来实现.这样更容易扩展.一般至少会有两个抽象方法,一个用来建造产品,一个是用来返回产品.…
在阎宏博士的<JAVA与模式>一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例. 举例说明适用场景: 假设应用系统需要多种登录方式:口令认证(通过数据库验证用户).域认证(通过微软域验证用户).建立一个支持多种登录方式的接口,见下图: 1 public interface Login { 2 //登录验证 3 public boolean verify(…
单例模式又称为职责模式,它用来在程序中创建一个单一功能的访问点,通俗地说就是实例化出来的对象是唯一的.所有的单例模式至少拥有以下三种公共元素:1. 它们必须拥有一个构造函数,并且必须被标记为private2. 它们拥有一个保存类的实例的静态成员变量3. 它们拥有一个访问这个实例的公共的静态方法单例类不能再其它类中直接实例化,只能被其自身实例化.它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用.单例模式的优缺点: 主要优点: 1.提供了对唯一实例的受控访问. 2.由于在系统内存中只存在…
一.概述 将抽象部分与它的实现部分分离,使它们都可以独立地变化.它是一种对象结构型模式.比如存在2个维度,第一个维度有一个抽象类A和对应的子类A1和A2:第二个维度有另一个接口B和对应的子类B1和B2:接口A依赖接口B. 所谓的独立变化就是当我们修改A1和A2或是修改B1和B2对方都不用修改.这种抽象依赖就像桥接. 二.示例 比如上图所示:动物(抽象类)走路(接口),动物有狗(具体类)和猫(具体类),路有大路(具体类)和小路(具体类),要实现的就是  “什么动物在什么路走路”,这就是一个2维度组…
一.概述 代理模式是指客户端并不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象. 其特征是代理类与委托类有同样的接口,真正的核心业务逻辑还是在实际对象里面. 二.为什么要使用代理模式 当客户端不想直接调用实际对象,或是客户端直接调用实际对象有困难. 比如:想在实际对象的业务方法执行前或执行后额外处理一些事情.但是又不能修改原来的实际对象的方法,这时候也可以用代理模式. 三.代理模式的分类 1.静态代理(在程序运行前,代理类的.class文件已经存在,所以称为静态代理) 1)原业务接…
在说原型模式之前先说一下浅拷贝和深拷贝的概念 一.浅拷贝和深拷贝 1.浅拷贝 在java中,对象创建后需要有一个引用变量来指向该对象实际的地址空间,也就是说引用变量与对象实体是两个不同的数据体.在Object类的clone()方法中. 对对象字段进行复制时,如果字段是String 和8种基本数据类型(int,boolean,char,byte,short,float,double.long)包括对应的封装类,则会复制字段的值到一个新的变量中:而字段是引用类型,则仅会将引用值复制给新对象中的相应字…
一.概述 定义:策略模式是指对一系列的算法定义,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法独立于使用它的客户而独立变化.(概念不好理解,可以看第二节的合例子) 基本角色: 环境(Context)角色:持有一个Strategy的引用,并执行策略的方法. 抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现.此角色给出所有的具体策略类所需的接口. 具体策略(ConcreteStrategy)角色:包装了相关的算法或行为 二.示例 举个实际场景:一个老板…
一.定义 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 如果上面的话不好理解,请看下面的例子 二.示例 1)定义一个模板类:原则就是将所有子类通用的功能直接放在模板类里面,每个子类独有的功能放到子类来实现,不管是哪个子类,都要执行excute里面容的内容. public abstract class Template { //通用功能,所有的子类都要执行的方法 public void beforeAction(){…