zoukankan      html  css  js  c++  java
  • 缺省适配器

    Adapter-结构型模式的一种

    解决 一个接口(规则)定义了很多方法,这个接口有很多子实现类,如果因为需求改变需要对某个或某几个子实现添加新的规则,那么由于都实现自一个接口,其它类也需要全部做修改。

    故我们使用一个适配器(通常是一个抽象类),作为接口与具体实现类的一个桥梁,我们把规则都放在接口里,具体需要哪些方法则通过这个抽象类来筛选,不需要的就将它空实现(抛出异常),如果某条规则只适用某分支,就添加到对应适配器(抽象类)里面而不丢在接口里。

    public interface Person {
        //原本的
        void haircut();
        void dressing();
        
        //扩展的
        void cosmetology();
    }
    
    
    public abstract class ManAdapter implements Person {
    
        @Override
        public abstract void haircut();
    
        @Override
        public abstract void dressing();
    
        @Override
        public void cosmetology() {
            // TODO Auto-generated method stub
            //可以抛出一个自定义异常
        }
    
    }
    
    
    public abstract class WomanAdapter implements Person{
    
        @Override
        public abstract void haircut();
    
        @Override
        public abstract void dressing();
    
        @Override
        public abstract void cosmetology();//通过接口扩展的
        public abstract void Manicure();//通过适配器扩展的
        
    }
    
    public class Man extends ManAdapter {
    
        public void haircut() {
            // TODO Auto-generated method stub
            System.out.println("男生,理发只要十块钱");
        }
    
        @Override
        public void dressing() {
            // TODO Auto-generated method stub
            System.out.println("男生,随便穿就好啦");
        }
    
    }
    
    public class Woman extends WomanAdapter {
    
        @Override
        public void haircut() {
            // TODO Auto-generated method stub
            System.out.println("我是女生,需要花很长时间理发");
        }
    
        @Override
        public void dressing() {
            // TODO Auto-generated method stub
            System.out.println("我是女生,今天就穿小裙子");
        }
    
        @Override
        public void cosmetology() {
            // TODO Auto-generated method stub
            System.out.println("今天休假,去做美容");
        }
    
        @Override
        public void Manicure() {
            // TODO Auto-generated method stub
            System.out.println("做指甲");
        }
    
    }
  • 相关阅读:
    Asp.net 后台添加CSS、JS、Meta标签(帮助类)
    Jquery 事件冒泡
    一个例子理解C#位移
    CodeSmith 创建Ado.Net自定义模版(四)
    .NET4.0下网站应用程序用UrlRewriter.dll重写无后缀路径 (在IIS7.5中的配置方法)
    用泛型的IEqualityComparer<T>接口去重复项
    Why MapReduce?
    SYN flood攻击介绍
    tmux使用方法详解
    理解Linux系统负荷
  • 原文地址:https://www.cnblogs.com/hebiao/p/12873986.html
Copyright © 2011-2022 走看看