建造者模式(Builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. Product类: package cn.happy.design_pattern._09builder; import java.util.ArrayList; import java.util.List; public class Product { List<String> parts = new ArrayList<>(); public void add(Strin…
明确是王道 --Clean Code 先定义策略类 package cn.no2.strategy; public abstract class Strategy { //省略属性 //算法方法 public abstract void algrithmInterface(); } 在定义若干策略子类 package cn.no2.strategy; public class ConcreteStrategyA extends Strategy { @Override public void a…
To be, or not to be: that is the question. --<哈姆雷特> 代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问. 上代码: package cn.no4.proxy; public interface IMakeMoney { void makeMoney(); } package cn.no4.proxy; public class Proxy implements IMakeMoney { private Boss boss;…
外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 子系统: package cn.happy.design_pattern._08facade; public class SubSystemOne { public void MethodOne(){ System.out.println("子系统方法一"); } } public class SubSystemTwo { public void Metho…
模板方法模式(TemplateMethod),定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 结构图: 代码: 算法骨架: package cn.happy.design_pattern._07templatemethod; public abstract class AbstractClass { public abstract void primitiveOperation1(); public abstract…
That there's some good in this world, Mr. Frodo. And it's worth fighting for. 原型模式(prototype),用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 至于Object.clone()这里就不赘述了.文档看起来可能有些难懂,直接上代码反而更容易理解: 浅克隆: package cn.happy.design_pattern._06prototype.shallowclone; public ab…
前言 在上一篇中我们学习了行为型模式的责任链模式(Chain of Responsibility Pattern)和命令模式(Command Pattern).本篇则来学习下行为型模式的两个模式, 解释器模式(Interpreter Pattern)和迭代器模式(Iterator Pattern). 解释器模式 简介 解释器模式顾名思义,就是对某事物进行解释.给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器.客户端可以使用这个解释器来解释这个语言中的句子. 解释器模式…
[前面的话] 学习的进度应该稍微在快一点. Java日志到了必须学习怎么使用的时候了,因为在项目中要进行使用.基础性文章,选择性阅读. [结构] java日志对调试,记录运行,问题定位都起到了很重要的作用,一般常用的日志框架有: sf4j commons-logging log4j JDK自带logging 其他日志框架 [定义]      记录日志:一般在最开始写代码的时候总是会在代码中加入一些System.out.println方法的语句来观察代码运行的情况.这样需要反复加入和修改,日志AP…
一.抽象(abstract): 1.抽象类: 使用abstract修饰的类就是抽象类; 相比于普通类抽象类增加了支持抽象方法的功能,但也丢失了创建实例的功能(抽象类中不能创建实例),其他普通类有的抽象类可以有. 抽象类的三个注意点: ①.虽然抽象类不能创建实例,但它依然有构造器(主要给其子类的构造器调用-子类至少调用父类构造器一次); ②.抽象类中可以没有抽象方法(可有可无); ③.抽象类总是不能创建实例/对象的 - 即使它没有包含抽象方法. public abstract class Test…
水边一只青蛙在笑 --石头和水 工厂方法模式(Factory Method),定义了一个用于创建对象的接口,让实现类决定实例化哪一个类.工厂方法使一个类的实例化延迟到其子类. 这里在简单和工厂的基础上写工厂: 先定义一个接口 package cn.no5.factorymethod; import cn.no1.simplefactory.Operation; public interface IFactory { Operation CreateOperation(); } 再定义其子类: p…