<menu id="gc4q0"></menu>
  • <menu id="gc4q0"></menu>
  • <input id="gc4q0"></input>
    <nav id="gc4q0"></nav>
  • <input id="gc4q0"><acronym id="gc4q0"></acronym></input>
  • Java day10【第二十章】接口的定义与使用

    【第二十章】接口的定义与使用

    二.接口定义加强:

      接口最早的主要特点是全部由抽象方法和全局常量所组成,但是如果项目设计不当,就有可能出现问题:

    分享图片

     

      一直强调该操作是属于结构设计不当,在这样的情况下往往不会让子类直接实现接口,而是在中间追加一个过度的抽象类。

      但是从JDK1.8之后,为了解决接口设计的缺陷,所以在接口中允许开发者定义普通方法。

    interface IMessage
    {
        public String Message();
        public default boolean Connect(){
            return true;                        //default定义一个普通方法
        };        
    }
    class MessageImp implements IMessage
    {
        public String Message(){
            return "WWW.MLDN.COM";
        }
    }
    
    public class tsy
    {
        public static void main(String[] args) 
        {
            IMessage msg = new MessageImp();
            if(msg.Connect()){
                System.out.println(msg.Message());
            }
        }
    }

      接口中default定义一个普通方法,但是该操作是一个挽救功能,不应该作为设计首选。

     

    三.使用接口定义标准:

      对于接口而言在开发之中最为重要的应用就是进行标准的制定,实际上在日常的生活之中也会听见许多关于接口的名词:USB接口,PCI接口等等,这些实际上都属于标准的应用。

      下面我们定义简单的USB接口标准

    interface IUSB{
        public boolean check();
        public void work();
    }
    class Computer
    {    
        public void plugin(IUSB iusb){
            if(iusb.check()){
                iusb.work();
            }else {
                System.out.println("硬件设备出错");
            }
        }
    }
    class Keyboard implements IUSB
    {
        public boolean check(){
            return true;
        }
        public void work(){
            System.out.println("硬件设备开始工作");
        }
    }
    class Print implements IUSB
    {
        public boolean check(){
            return false;
        }
        public void work(){
            System.out.println("硬件设备开始工作");
        }
    }
    
    public class tsy
    {
        public static void main(String[] args) {
            Computer computer = new Computer();
            computer.plugin(new Keyboard());
            computer.plugin(new Print());
        }
    }

     

    四.工厂设计模式(Factory):

      接口通过子类的向上转型来实现实例化,但是在对象实例化的过程之中也可能存在有设计问题。

    interface IFood
    {
        public void eat();
    }
    class Milk implements IFood
    {
        public void eat(){
            System.out.println("喝酒奶");
        }
    }
    class Bread implements IFood
    {
        public void eat(){
            System.out.println("吃面包");
        }
    }
    public class tsy
    {
        public static void main(String[] args) {
            IFood eat = new Milk();
            eat.eat();
        }
    }

      红色代码部分表示,用户需要吃面包,则需要修改客户端,用户需要喝牛奶,也需要修改客户端。

      所以此时的程序就表示出现有耦合问题,而造成耦合最直接的元凶:关键字 new, 关键字new。

      我们以JVM设计为例,Java实现可移植性的关键在于JVM,而JVM的核心原理:利用一个虚拟机来运行Java程序,所有的程序并不与具体的操作系统有任何的关联,而是由JVM来匹配。

      所以我们得出的结论是:良好的设计应该避免耦合

    范例:工厂设计实现:

    interface IFood
    {
        public void eat();
    }
    class Factory
    {
        public static IFood getInstance(String className){
            if("Bread".equals(className)){
                return new Bread();
            }else if("Milk".equals(className)){
                return new Milk();
            }else{
                return null;
            }
        }
    }
    class Milk implements IFood
    {
        public void eat(){
            System.out.println("喝酒奶");
        }
    }
    class Bread implements IFood
    {
        public void eat(){
            System.out.println("吃面包");
        }
    }
    public class tsy
    {
        public static void main(String args[]) {
            IFood food = Factory.getInstance(args[0]);
            food.eat();
        }
    }

     

    分享图片

     

      此时主类通过工厂Factory和客户端联系,不存在主类和客户端的耦合问题。

    相关文章
    相关标签/搜索
    香港最快現场开奖结果118图库天下彩天空彩免费大全香港蓝月亮精选资料六合宝典天天彩票新版 榆中县| 钟祥市| 汨罗市| 荆州市| 手游| 栾川县| 西乌珠穆沁旗| 松江区| 大新县| 普兰店市| 河东区| 邯郸市| 荃湾区| 亚东县| 青阳县| 鸡西市| 花莲县| 腾冲县| 达拉特旗| 嘉峪关市| 青铜峡市| 乐亭县| 房山区| 陆良县| 天气| 桐梓县| 荆门市| 乌兰察布市| 日土县| 巫山县| 镇雄县| 娄底市| 手游| 辛集市| 佛山市| 海淀区| 汉沽区| 牡丹江市| 和龙市| 陆川县| 增城市| 嘉鱼县| 城口县| 黔西| 电白县| 昌乐县| 尚志市| 上杭县| 通化市| 河池市| 揭东县| 兴业县| 桓台县| 耿马| 武宣县| 托克托县| 肥城市| 钟山县| 那坡县| 江山市| 潮州市| 合川市| 正阳县| 泰兴市| 庆安县| 许昌市| 潢川县| 霍城县| 泌阳县| 留坝县| 磐石市| 株洲县| 子长县| 铜川市| 锦屏县| 彰武县| 松滋市| 南康市| 揭西县| 新丰县| 威海市| 神木县| 许昌县| 祁连县| 黄冈市| 金阳县| 遵义市| 册亨县| 天峨县| 凭祥市| 鄱阳县| 安达市| 凭祥市| 涿鹿县| 兴隆县| 和硕县| 同德县| 临高县| 兴义市| 清流县| 读书| 孝昌县| 梁河县| 铜梁县| 湄潭县| 顺昌县| 伊宁县| 威信县| 新田县| 延吉市| 壶关县| 耒阳市| 门源| 丰宁| 兴化市| 铅山县| 临清市| 大庆市| 巴东县| 泰和县| 讷河市| 当雄县| 阳新县| 达日县| 卓资县| 遵义县| 垫江县| 广河县| 辽中县| 宿迁市| 泌阳县| 平利县| 鸡泽县| 黎城县| 怀集县| 灌阳县| 五台县| 兴仁县| 古交市| 平湖市| 崇义县| 惠水县| 丽江市| 韩城市| 随州市| 南靖县| 饶河县| 嘉义市| 西贡区| 长乐市| 合川市| 宾川县| 蒙自县| 麻栗坡县| 瑞金市| 郸城县| 兴城市| 徐州市| 始兴县| 阳曲县| 贞丰县| 宜良县| 广丰县| 大新县| 大洼县| 资兴市| 金昌市| 沁水县| 赞皇县| 米泉市| 德昌县| 崇左市| 逊克县| 丰台区| 石渠县| 集安市| 满城县| 靖江市| 筠连县| 旺苍县| 商南县| 道真| 淳安县| 毕节市| 泾川县| 静海县| 台南市| 阿坝县| 始兴县| 上蔡县| 福州市| 德州市| 塘沽区| 长兴县| 华宁县| 西盟| 舞阳县| 张家港市| 新营市| 万山特区| 庄河市| 东丽区| 新乡县| 慈溪市| 邮箱| 昌平区| 建德市| 攀枝花市| 玉门市| 大安市| 大理市| 青岛市| 麻栗坡县| 定安县| 建阳市| 涡阳县| 通化县| 台北市| 丹巴县| 秦皇岛市| 保德县| 德安县| 前郭尔| 锦州市| 余庆县| 双桥区| 兴仁县| 达州市| 曲水县| 乐业县| 内黄县| 星座| 河西区| 自治县| 梧州市| 侯马市| 乐业县| 武清区| 涟水县| 桐乡市| 宜都市| 孝昌县| 石首市| 虞城县| 延寿县| 任丘市| 阿坝| 清原| 措勤县| 方正县| 利川市| 泸溪县| 若尔盖县| 龙里县| 共和县| 元谋县| 康定县| 五指山市| 安平县| 杂多县| 昭通市| 临安市| 水城县| 齐齐哈尔市| 台中县| 邳州市| 广丰县| 公安县| 京山县| 黔西| 蓬溪县| 景洪市| 义马市| 遂昌县| 苏尼特右旗| 阿尔山市| 化州市| 洪洞县| 遵义县| 邢台县| 高邮市| 通海县| 仪陇县| 临潭县| 水城县| 湟源县| 饶阳县| 吴旗县| 儋州市| 陵川县| 灵宝市| 曲靖市| 呼伦贝尔市| 临夏市| 兴和县| 砀山县| 丽江市| 嘉黎县| 玉田县| 中卫市| 亚东县| 禄劝| 县级市| 赞皇县| 宾川县| 沾化县| 巍山| 裕民县| 稻城县| 元氏县| 南乐县| 灵台县| 苏尼特右旗| 西华县| 绥宁县| 莱芜市| 扎鲁特旗| 尉犁县| 石林| 东阿县| 东台市| 岫岩| 绥化市| 汨罗市| 扶风县| 渝中区| 安岳县| 丰宁| 铁力市| 林西县| 永寿县| 于田县| 西峡县| 武邑县| 南川市| 定远县| 延安市| 金寨县| 麻江县| 芦山县| 沁源县| 汾阳市| 金坛市| 双城市| 大丰市| 迁西县| 天祝| 梨树县| 永宁县| 公主岭市| 太和县| 朝阳区| 土默特左旗| 同德县| 霍邱县| 五家渠市| 临高县| 尼玛县| 都兰县| 岐山县| 晋宁县| 沙坪坝区| 德州市| 卢龙县| 资中县| 横峰县| 广灵县| 防城港市| 江达县| 湘乡市| 衡东县| 鹤庆县| 原平市| 明水县| 晋江市| 准格尔旗| 礼泉县| 湖南省| 营山县| 通榆县| 香河县| 长岛县| 兴义市| 互助| 邵阳县| 保亭| 清水县| 仙游县| 东莞市| 龙州县| 普格县| 瑞金市| 外汇| 荥阳市| 高雄县| 长沙县| 洪洞县| 井冈山市| 米易县| 积石山| 武川县| 博爱县| 上思县| 牟定县| 周至县| 明星| 资溪县| 长海县| 延安市| 紫金县| 通榆县| 西城区| 许昌县| 荣昌县| 张家川| 穆棱市| 县级市| 张北县| 灵丘县| 涡阳县| 民乐县| 水富县| 岑溪市| 海阳市| 榆中县| 垫江县| 海盐县| 遵义市| 辽宁省| 平阴县| 施秉县| 铁岭市| 全南县| 漳浦县| 龙海市| 柘荣县| 怀远县| 句容市| 德惠市| 澎湖县| 当阳市| 大化| 五家渠市| 九江县| 吉隆县| 五家渠市| 太谷县| 濮阳市| 长岛县| 青州市| 翁源县| 滕州市| 繁昌县| 资讯| 阜宁县| 观塘区| 常宁市| 景德镇市| 湟中县| 光泽县| 商城县| 永登县| 盐山县| 肥乡县| 丹东市| 临清市| 兴化市| 承德市| 榆中县| 石渠县| 辽源市| 涟水县| 海晏县| 色达县| 龙游县| 麦盖提县| 龙海市| 衡水市| 芦山县| 耿马| 泽普县| 闻喜县| 历史| 陇川县| 沈丘县| 淮南市| 阿克陶县| 绥阳县| 高尔夫| 邵阳市| 昌吉市| 邹平县| 天峨县| 黔东| 当雄县| 喀喇沁旗| 佳木斯市| 丰镇市| 齐齐哈尔市| 湖南省| 郴州市| 昆山市| 当雄县| 丹江口市| 法库县| 临沧市| 临颍县| 渭源县| 昌江| 阿荣旗| 潢川县| 临颍县| 浦北县| 梧州市| 隆回县| 大石桥市| 葵青区| 独山县| 阜阳市| 卓尼县| 封丘县| 子洲县| 宁国市| 隆安县| 嘉义县| 苏尼特右旗| 千阳县| 施甸县| 长寿区| 忻城县| 祁阳县| 寿宁县| 遂平县| 扬中市| 天全县| 土默特左旗| 额济纳旗| 潢川县| 镇安县| 绍兴县| 武隆县| 曲松县| 广平县| 黔东| 江达县| 安岳县| 理塘县| 黄冈市| 唐海县| 铅山县| 阿拉善左旗| 同江市| 桐庐县| 桃园市| 邵阳县| 黑山县| 蕲春县| 威远县| 麻江县| 乃东县| 白沙| 灵石县| 鸡泽县| 石河子市| 阳山县| 丰县| 茶陵县| 正蓝旗| 南雄市| 余庆县| 江源县| 双牌县| 开江县| 海晏县| 新平| 曲阳县| 左云县| 城市| 长武县| 陕西省| 赫章县| 周口市| 桦甸市| 阳山县| 临漳县| 宁乡县| 英吉沙县| 合江县| 桦川县| 新密市| 海口市| 邻水| 汤阴县| 汝阳县| 德安县| 鄢陵县| 兴化市| 红原县| 兰溪市| 佛坪县| 舟山市| 扎囊县| 大洼县| 雅安市| 赫章县| 雅安市| 墨竹工卡县| 包头市| 鸡东县| 襄汾县| 景洪市| 常宁市| 荣成市| 闻喜县| 东明县| http://www.jx1870ezailv.fun http://wap.jx1870contactv.fun http://m.jx1870concertv.fun http://3g.jx1870endv.fun http://wap.jx1870awardv.fun http://m.jx1870cornerv.fun http://3g.jx1870bathv.fun http://wap.jx1870bulletinv.fun http://wap.jx1870borderv.fun http://3g.jx1870ezptyv.fun http://3g.jx1870discoverv.fun http://3g.jx1870appearv.fun http://wap.jx1870breakv.fun http://m.jx1870boundv.fun http://3g.jx1870defaultv.fun http://wap.jx1870designv.fun http://3g.jx1870addressv.fun http://www.jx1870crewv.fun