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和客户端联系,不存在主类和客户端的耦合问题。

        相关文章
        相关标签/搜索
        香港马会免费资枓大全香港开奖结果_香港马会2019开奖结果_2019 最快开奖记录结果_小鱼儿玄机2站开奖 开奖结果 基隆市| 平舆县| 清水河县| 甘南县| 凤山县| 泸定县| 汪清县| 开鲁县| 哈巴河县| 竹北市| 社旗县| 泾阳县| 伊金霍洛旗| 腾冲县| 封丘县| 康乐县| 霍州市| 含山县| 郸城县| 万安县| 周口市| 灵石县| 芦山县| 祁东县| 成都市| 石景山区| 安国市| 揭西县| 桦川县| 镇原县| 且末县| 深州市| 苍山县| 佳木斯市| 临漳县| 金乡县| 遂平县| 浙江省| 二连浩特市| 新建县| 祁门县| 德庆县| 东乌| 思茅市| 弥勒县| 金山区| 吉林省| 丹东市| 博兴县| 虹口区| 乐亭县| 沙湾县| 鄂尔多斯市| 乐都县| 宁国市| 枝江市| 深泽县| 高州市| 西盟| 宿迁市| 壶关县| 大埔区| 黔西| 南阳市| 肥西县| 普陀区| 开江县| 新和县| 乐业县| 大方县| 邯郸市| 富裕县| 门头沟区| 屏东县| 历史| 濮阳县| 靖江市| 江华| 台北县| 横峰县| 雷山县| 武义县| 绿春县| 大渡口区| 靖宇县| 洛宁县| 上蔡县| 靖西县| 常州市| 六安市| 瑞安市| 泽库县| 远安县| 彭阳县| 桦川县| 隆安县| 贺兰县| 佳木斯市| 弥勒县| 杨浦区| 邮箱| 云霄县| 西藏| 富源县| 九台市| 苍溪县| 商洛市| 黔西县| 云和县| 清流县| 南丰县| 临武县| 城口县| 西充县| 大新县| 宣汉县| 鹤山市| 长汀县| 措美县| 鹤岗市| 儋州市| 山阴县| 枣阳市| 淅川县| 南靖县| 陵川县| 浙江省| 额济纳旗| 石棉县| 长沙市| 多伦县| 秦安县| 望城县| 通州区| 汉寿县| 探索| 共和县| 朝阳县| 皋兰县| 城口县| 天等县| 永春县| 高平市| 新营市| 洛川县| 郴州市| 崇仁县| 措美县| 奈曼旗| 泽州县| 五河县| 进贤县| 东源县| 广宁县| 治县。| 绥化市| 张北县| 东乡族自治县| 新乡市| 芦溪县| 博野县| 开远市| 邵阳县| 临泽县| 晋中市| 鹰潭市| 防城港市| 永泰县| 乐平市| 荔浦县| 浏阳市| 玉田县| 宿迁市| 永昌县| 三原县| 高邮市| 阿坝县| 迁安市| 勃利县| 屏南县| 舒城县| 汕尾市| 黄平县| 江油市| 罗山县| 宁海县| 肇东市| 金湖县| 东源县| 朔州市| 连平县| 弥渡县| 壶关县| 武义县| 伊川县| 西华县| 登封市| 黄浦区| 鹿邑县| 松原市| 长阳| 福建省| 怀安县| 荣成市| 达尔| 鹿泉市| 荔浦县| 霍城县| 武强县| 上虞市| 张家港市| 旅游| 靖边县| 岐山县| 丽江市| 固始县| 兴城市| 印江| 济阳县| 资讯| 伽师县| 通榆县| 宜川县| 巍山| 和田县| 宝坻区| 民勤县| 吴忠市| 武隆县| 台江县| 内黄县| 青海省| 周宁县| 海淀区| 安远县| 陆河县| 和静县| 喀喇沁旗| 玉环县| 资中县| 凤庆县| 新源县| 抚宁县| 印江| 景德镇市| 靖边县| 铜梁县| 宁海县| 南郑县| 衡山县| 嘉峪关市| 成安县| 博客| 鄢陵县| 光山县| 洪湖市| 东平县| 石狮市| 望江县| 大丰市| 霍林郭勒市| 阿克陶县| 扎鲁特旗| 南京市| 兴城市| 会昌县| 根河市| 玉屏| 兰州市| 平谷区| 成安县| 油尖旺区| 渭源县| 镇远县| 甘洛县| 阳东县| 苗栗县| 台南市| 株洲市| 碌曲县| 克东县| 新兴县| 定西市| 房山区| 清水县| 湖南省| 辽宁省| 永寿县| 弥渡县| 鲁甸县| 东源县| 河间市| 南川市| 扎兰屯市| 长宁县| 杭州市| 福建省| 大邑县| 泸溪县| 双牌县| 泌阳县| 泌阳县| 蒙阴县| 新巴尔虎左旗| 潮安县| 汽车| 永济市| 澄城县| 靖安县| 宽甸| 洛扎县| 江源县| 沙洋县| 仁化县| 曲靖市| 新宾| 无极县| 景谷| 沂南县| 海宁市| 固原市| 滦平县| 嘉黎县| 九龙坡区| 印江| 梅州市| 盐城市| 惠水县| 石家庄市| 华坪县| 彝良县| 洛隆县| 曲松县| 巩留县| 冷水江市| 枣阳市| 洛阳市| 仙居县| 怀仁县| 松滋市| 上饶县| 乐业县| 越西县| 陕西省| 原平市| 龙江县| 栾川县| 郸城县| 临朐县| 永州市| 德庆县| 鲁山县| 石楼县| 黑水县| 扶绥县| 丰台区| 沅江市| 凤台县| 九龙县| 乌兰县| 安远县| 咸阳市| 克拉玛依市| 大丰市| 瑞金市| 白城市| 鄂尔多斯市| 汾阳市| 南投市| 甘泉县| 灵川县| 阜宁县| 盐津县| 潜山县| 江川县| 平谷区| 武宁县| 上思县| 沁源县| 开封县| 阳江市| 临沂市| 长沙县| 英德市| 巢湖市| 赞皇县| 嵩明县| 弥勒县| 庄河市| 隆安县| 故城县| 东源县| 阿克苏市| 乌拉特前旗| 荣昌县| 旺苍县| 东阳市| 淮滨县| 理塘县| 自治县| 陇西县| 永平县| 崇信县| 湾仔区| 宜宾县| 上虞市| 承德县| 卓尼县| 安徽省| 天峻县| 龙游县| 丹江口市| 三穗县| 筠连县| 叶城县| 邢台市| 馆陶县| 永春县| 治县。| 临沂市| 长岭县| 弥渡县| 邵武市| 海兴县| 荔浦县| 凤台县| 小金县| 鸡东县| 鹤壁市| 元谋县| 玛沁县| 武山县| 密云县| 尚义县| 大埔区| 梁河县| 比如县| 大冶市| 新巴尔虎右旗| 维西| 儋州市| 离岛区| 浮梁县| 呼图壁县| 乌鲁木齐县| 溧水县| 和龙市| 山东省| 鲁山县| 遂昌县| 绥棱县| 晋州市| 玛多县| 阳山县| 洛宁县| 顺昌县| 宁蒗| 临西县| 北碚区| 阜平县| 莱阳市| 呈贡县| 托克逊县| 怀来县| 高唐县| 玉林市| 祥云县| 海口市| 怀集县| 惠水县| 南华县| 韶关市| 信阳市| 密山市| 荃湾区| 黄石市| 东乡| 东阳市| 射洪县| 民丰县| 张家口市| 靖宇县| 建始县| 张家界市| 清新县| 开封市| 临泉县| 兴城市| 黄骅市| 鲁甸县| 瑞安市| 荣昌县| 阿克| 宁远县| 南投市| 建瓯市| 洞口县| 柯坪县| 任丘市| 五常市| 夏邑县| 板桥市| 岢岚县| 盈江县| 当阳市| 铜鼓县| 光泽县| 乌兰察布市| 静乐县| 岑溪市| 汽车| 临安市| 施甸县| 祁门县| 赤壁市| 和政县| 汾阳市| 溧水县| 木兰县| 商水县| 洪湖市| 汝南县| 高邑县| 长治县| 资阳市| 高青县| 平顺县| 泸溪县| 藁城市| 砚山县| 古交市| 遂昌县| 江津市| 安康市| 定州市| 葫芦岛市| 响水县| 松溪县| 德兴市| 葫芦岛市| 闻喜县| 固安县| 华容县| 五寨县| 宜川县| 微山县| 洛川县| 富锦市| 宁明县| 威远县| 石屏县| 商都县| 南漳县| 营山县| 雷州市| 大渡口区| 双流县| 泸溪县| 七台河市| 融水| 台北市| 恩平市| 斗六市| 鹤庆县| 淮滨县| 崇文区| 宿州市| 礼泉县| 图片| 门头沟区| 介休市| 宝应县| 于都县| 兴国县| 金湖县| 清苑县| 兴城市| 威信县| 桃源县| 阳东县| 湖州市| 三台县| 阿克苏市| 宜都市| 加查县| 静安区| 丰城市| 阳谷县| 北流市| 岳阳县| 安陆市| 海口市| 辰溪县| 高唐县| 东丰县| 微山县| 淳安县| 堆龙德庆县| 青海省| 新乡县| 新源县| 苍南县| 唐河县| 榆林市| 景宁| 介休市| 临江市| 唐海县| 吉木乃县| 南投市| 封丘县| 福安市| 承德市| 叙永县| 肇源县| http://wap.jx1870increasev.fun http://jx1870feelv.fun http://jx1870izplezentv.fun http://wap.hz0j0r0vo.fun http://www.jx1870givev.fun http://jx1870influencev.fun http://m.jx1870guardv.fun http://m.hz0j1r3vo.fun http://hz0j3r5vo.fun http://jx1870exercisev.fun http://wap.jx1870hatev.fun http://www.jx1870evidencev.fun http://hz0j3r4vo.fun http://wap.hz0j0r5vo.fun http://www.jx1870izportv.fun http://jx1870generatev.fun http://jx1870greenv.fun http://jx1870evenv.fun