外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 子系统: package cn.happy.design_pattern._08facade; public class SubSystemOne { public void MethodOne(){ System.out.println("子系统方法一"); } } public class SubSystemTwo { public void Metho…
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;…
模板方法模式(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…
本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/7772184.html,记录一下学习过程以备后续查用. 一.引言 今天我们要讲结构型设计模式的第五个模式--外观模式.先从名字上来理解一下外观模式,当看到“外观”这个词时,很容易想到“外表”这个词语,两者有着 很相近的意思.就拿谈恋爱来说,“外表”很重要,如果第一眼看着很舒服.有眼缘,那就有交往下去的可能.如果长得“三寸钉.枯树皮”,估计就够呛了. 在这方面,“外观”和“外表”有着相同的作用.在软件系统中,…
前言 在上一篇中我们学习了结构型模式的适配器模式和桥接模式.本篇则来学习下结构型模式的外观模式和装饰器模式. 外观模式 简介 外观模式隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口.这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性. 简单的来说就是对外提供一个简单接口,隐藏实现的逻辑.比如常用电脑的电源键,我们只需按电源键,就可以让它启动或者关闭,无需知道它是怎么启动的(启动CPU.启动内存.启动硬盘),怎么关闭的(关闭硬盘.关闭内存.关闭CPU)…
明确是王道 --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…
 建造者模式(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…
水边一只青蛙在笑 --石头和水 工厂方法模式(Factory Method),定义了一个用于创建对象的接口,让实现类决定实例化哪一个类.工厂方法使一个类的实例化延迟到其子类. 这里在简单和工厂的基础上写工厂: 先定义一个接口 package cn.no5.factorymethod; import cn.no1.simplefactory.Operation; public interface IFactory { Operation CreateOperation(); } 再定义其子类: p…
蜀道之难.难于上青天,侧身西望长咨嗟 --蜀道难 设计模式第一篇,简单工厂. 定义Operation类 package cn.no1.simplefactory; public abstract class Operation { private double numA; private double numB; public double getNumA() { return numA; } public void setNumA(double numA) { this.numA = numA…