代理模式 适配器模式 装饰模式 实例
2017-12-19 23:47
281 查看
代理模式
适配器模式
装饰模式
// Calculate.java public interface Calculate { int add(int a, int b); } // Calculator.java public class Calculator implements Calculate { public int add(int a, int b) { return a + b; } } // CalculatorProxy.java - 代理 public class CalculatorProxy implements Calculate { private Calculator calculator; public CalculatorProxy(Calculator calculator) { this.calculator = calculator; } public int add(int a, int b) { System.out.println("calculate " + a + " + " + b); return calculator.add(a, b); } } // ProxyTest.java public class ProxyTest { public static void main(String[] args) { Calculator calculator = new Calculator(); CalculatorProxy calculatorProxy = new CalculatorProxy(calculator); int sum = calculatorProxy.add(4, 6); System.out.println(sum); } } // 输出结果: // calculate 4 + 6 // 10
适配器模式
// RedFirer.java public interface RedFirer { void burn(); } // Kyo.java public class Kyo implements RedFirer { public void burn() { System.out.println("燃烧吧,我的赤焰!"); } } // GreenFirer.java public interface GreenFirer { void burn(); } // Ash.java public class Ash implements GreenFirer { public void burn() { System.out.println("燃烧吧,我的翠焰!"); } } // FakeKyo.java - 适配器 public class FakeKyo implements RedFirer { private GreenFirer greenFirer; public FakeKyo(GreenFirer greenFirer) { this.greenFirer = greenFirer; } public void burn() { greenFirer.burn(); } } // AdapterTest.java public class AdapterTest { public static void main(String[] args) { GreenFirer ash = new Ash(); RedFirer fakeKyo = new FakeKyo(ash); fakeKyo.burn(); } } // 输出结果: // 燃烧吧,我的翠焰!
装饰模式
// Learn.java public interface Learn { void learnBasic(); void writeDemo(); void conclude(); void learnSth(); } // NormalLearn.java public class NormalLearn implements Learn { public void learnBasic() { System.out.println("学习基础知识...."); } public void writeDemo() { System.out.println("编写测试...."); } public void conclude() { System.out.println("总结...."); } public void learnSth() { learnBasic(); writeDemo(); conclude(); } } // AbstractLearn.java - 装饰器 public abstract class AbstractLearn implements Learn { private final Learn learn; public AbstractLearn(Learn learn) { this.learn = learn; } public void learnBasic() { learn.learnBasic(); } public void writeDemo() { learn.writeDemo(); } public void conclude() { learn.conclude(); } public void learnSth() { learnBasic(); writeDemo(); conclude(); } } // LazyDecorator.java public class LazyDecorator extends AbstractLearn { public LazyDecorator(Learn learn) { super(learn); } public void copyDemo() { System.out.println("抄袭别人的测试...."); } public void writeDemo() { super.writeDemo(); copyDemo(); } } // QuickDecorator.java public class QuickDecorator extends AbstractLearn { public QuickDecorator(Learn learn) { super(learn); } public void speedUp() { System.out.println("加快打字速度...."); } public void conclude() { super.conclude(); speedUp(); } } // DecoratorTest.java public class DecoratorTest { public static void main(String[] args) { Learn learn = new NormalLearn(); learn = new LazyDecorator(learn); learn = new QuickDecorator(learn); learn.learnSth(); } } // 输出结果: // 学习基础知识.... // 编写测试.... // 抄袭别人的测试.... // 总结.... // 加快打字速度....
相关文章推荐
- 适配器模式、装饰模式、代理模式和外观模式
- Java设计模式之代理模式与装饰模式实例详解
- 代理模式、装饰模式、适配器模式、组合模式、桥梁模式、外观模式、享元模式【读书笔记】设计模式4章:结构型模式
- 适配器模式、装饰器模式、代理模式的区别
- 菜鸟版JAVA设计模式—适配器模式,装饰模式,代理模式异同
- 适配器模式,装饰模式,代理模式异同
- Ruby使用设计模式中的代理模式与装饰模式的代码实例
- 适配器模式,装饰模式,代理模式异同
- 菜鸟版JAVA设计模式—适配器模式,装饰模式,代理模式异同
- Java 模式3(结构模式) - 适配器模式,缺省适配器模式,合成模式, 装饰模式,代理模式
- 设计模式 - 适配器模式,装饰模式,代理模式,外观模式(一)
- 结构型模式,适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
- 菜鸟版JAVA设计模式—适配器模式,装饰模式,代理模式异同
- 23种设计模式3--结构型模式(适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式)
- java设计模式(工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式、适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式,。 行为型模式,共十一种:策略模式、模板方法)
- 23种设计模式--结构型模式(适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式)
- 适配器模式,装饰器模式,代理模式
- 菜鸟版JAVA设计模式—适配器模式,装饰模式,代理模式异同
- 适配器模式、装饰器模式和代理模式的联系和区别
- 代理模式、装饰器模式、适配器模式