建造者模式(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…
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…