zoukankan      html  css  js  c++  java
  • 设计模式之装饰者模式

                                           工人

                                 /                      

                             水管工                   木匠

                        /                             /          

             A公司水管工  B公司水管工  A公司木匠    B公司木匠

    如上图所示,如果我们要实现AB公司的水管工和木匠,则要实现四个类。分别继承水管工和木匠的基类,如果需要在加个C公司呢,就显得特别繁琐,使用

    装饰者模式可以很好的解决这一问题,各个文件的代码如下

    1.Worker.java文件

    interface Worker {

         public void doSomeWork();

    }

    2.Plumber .java文件

    public class Plumber implements Worker{
        @Override
        public void doSomeWork() {
            System.out.println("修水管");
        }
    }

    3.Carpenter .java文件

    public class Carpenter implements Worker{
        @Override
        public void doSomeWork() {
            System.out.println("修门窗");
        }
    }

    4.ACompany .java文件

    public class ACompany implements Worker{
        private Worker worker;
        public ACompany(Worker worker) {
            this.worker = worker;
        }
        @Override
        public void doSomeWork() {
            System.out.println("你好");
            worker.doSomeWork();
        }
    }

    5.测试文件

    public class Test {

        public static void main(String[] args) {
            Plumber worker = new Plumber();
            ACompany aWorker = new ACompany(worker);

            //A公司的水管工干活,其中aWorker 为装饰者,worker 为被装饰者
            aWorker.doSomeWork();
            Carpenter worker2 = new Carpenter();
            ACompany aWorker2 = new ACompany(worker2);

           //A公司的木匠工干活
            aWorker2.doSomeWork();
        }
    }

  • 相关阅读:
    奶牛跑步2
    数据结构练习
    HighChats报表使用C#mvc导出本地图片
    选择论
    投票选举
    价值
    工作5年后总结的工作经验
    formValidator 不支持jquery1.9以上的解决办法
    随想29:没有最完美的制度,只有最适合的制度
    随想28:愿我成为一个高级黑
  • 原文地址:https://www.cnblogs.com/zhangkefan/p/4759098.html
Copyright © 2011-2022 走看看