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…
本文出自   http://blog.csdn.net/shuangde800 本笔记内容: 1. Java动态代理,反射机制 2. 保护代理 3. 应用保护代理实现的约会系统 ---------------------------------------------------------------------------- 走进保护模式 我们知道,相亲节目已经在天朝的电视上已经火了多年了,说明了有广大同胞需要这个配对服务,更别说咱们程序猿这个群体了. 现在要实现一个约会服务系统.你希望在这…
本文出自   http://blog.csdn.net/shuangde800 本笔记内容: 1. JAVA远程代理调用(RMI) 2. 代理模式 走进代理模式 在上一篇的状态模式中,我们实现了一个糖果机GumballMachine,  客户通过投币可以买到糖果. 现在设想这样一种情况: 糖果机是属于某个糖果公司的,这个公司的CEO坐在办公室里喝茶,看报纸, 但他还想要随时了解糖果机的状态, 比如还剩下多少个糖果,卖了多少钱等等. CEO要怎样才能远程"遥控"糖果机获取信息呢? 这就得…
本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/7814004.html,记录一下学习过程以备后续查用. 一.引言 今天我们要讲结构型设计模式的第七个模式,也是结构型设计模式中的最后一个模式--代理模式.先从名字上来看,“代理”可以理解为“代替”,代替“主人” 做一些事情.为什么需要“代理”?是因为某些原因(比如:安全方面的原因),不想让“主人”直接面对这些繁琐.复杂的问题,但是这些事情是经“主人”同意 或者授意的,如同“主人”亲自完成的一样.这个模式很简…
1.代理模式为一个对象提供一个代用品或占位符,以便控制对它的访问. 2.不用代理模式: 客户 -> 本体  使用代理模式:  客户 -> 代理 -> 本体 3.例子场景1 点击操作与服务器交互代理 虚拟代理 <input type="checkbox" id="1"></input>1        <input type="checkbox" id="2"></in…
明确是王道 --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…