设计模式之装饰器(第一篇)

设计模式这一块一直在我心头放着,每每闲暇之时都会想起我得去系统的了解一下,并且写一些文章记录学习的过程,算是一本《设计过程学习笔记》吧。

设计模式还有6个原则: 里氏替换, 接口最小化 ,最小知道 ,开闭原则,单一原则,依赖倒置

设计模式有23种 分别是:(参考网络)

创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。


这篇文章,我将记录装饰器模式的学习过程。

以下图 是 3个类:     MapleClass(被装饰类)  MapleDecorateAClass(装饰类A) MapleDecorateBClass(装饰类B) 

                  1个接口: MapleInterface

三个类和一个接口具体代码:


MapleClass(被装饰类)

package com.luyo.MapleTest;

/**
 * Created by Administrator on 2016/11/15.
 */
public class MapleClass implements MapleInterface {


    public void method1() {
        System.out.println("this  is  method1");

    }

    public void method2() {
        System.out.println("this is  method2");
    }

    public void method3() {
        System.out.println("this is  method3");
    }


    public static void main(String[] args) {

        MapleInterface mapleClass = new MapleClass();
        MapleDecorateAClass mapleDecorateAClass = new MapleDecorateAClass(mapleClass);
        mapleDecorateAClass.method1();
        mapleDecorateAClass.method2();
        mapleDecorateAClass.methodA();
        MapleDecorateBClass mapleDecorateBClass = new MapleDecorateBClass(mapleDecorateAClass);
        mapleDecorateBClass.method1();
        mapleDecorateBClass.methodB();

//        MapleInterface mapleClass = new MapleClass();
//        MapleInterface mapleClassProxy = (MapleInterface) new MapleClassProxy(mapleClass).getProxy();
//        mapleClassProxy.method1();
//        mapleClassProxy.method2();
//        mapleClassProxy.method3();

    }
}

MapleDecorateAClass(装饰器A)

package com.luyo.MapleTest;

/**
 * Created by Administrator on 2016/11/15.
 */
public class MapleDecorateAClass implements MapleInterface {
    private MapleInterface mapleInterface;

    public MapleDecorateAClass(MapleInterface mapleInterface) {
        this.mapleInterface= mapleInterface;

    }

    @Override
    public void method1() {
        System.out.println("A装饰");
        mapleInterface.method1();
        System.out.println("A装饰结束");
    }

    @Override
    public void method2() {
        System.out.println("A装饰");
        mapleInterface.method2();
        System.out.println("A装饰结束");
    }

    @Override
    public void method3() {
        System.out.println("A装饰");
        mapleInterface.method3();
        System.out.println("A装饰结束");
    }

    public void methodA() {
        System.out.println("this  method only in DecorateA");
    }
}

MapleDecorateBClass装饰器B

package com.luyo.MapleTest;

/**
 * Created by Administrator on 2016/11/15.
 */
public class MapleDecorateBClass implements MapleInterface {
    private MapleInterface mapleInterface;

    public MapleDecorateBClass(MapleInterface mapleInterface) {
        this.mapleInterface = mapleInterface;
    }

    @Override
    public void method1() {
        System.out.println("B装饰");
        mapleInterface.method1();
        System.out.println("B装饰结束");
    }

    @Override
    public void method2() {
        System.out.println("B装饰");
        mapleInterface.method2();
        System.out.println("B装饰结束");
    }

    @Override
    public void method3() {
        System.out.println("B装饰");
        mapleInterface.method3();
        System.out.println("B装饰结束");
    }

    public void methodB() {

        System.out.println("this  method only in DecorateB");
    }
} 

接口MapleInterface

package com.luyo.MapleTest;

/**
 * Created by Administrator on 2016/11/15.
 */
public interface MapleInterface {
    public void method1();
    public void method2();
    public void method3();
}


运行结果:



 


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值