<sub id="fhvtr"></sub><sub id="fhvtr"></sub>

      <address id="fhvtr"></address>

              <sub id="fhvtr"></sub>

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

                相关文章
                相关标签/搜索
                2020年香港开奖结果2018年香港六合马会开奖结果现场直播开奖历史资料记录在线查询网 鞍山市| 乌鲁木齐县| 册亨县| 固阳县| 崇礼县| 灵台县| 宜春市| 临城县| 滁州市| 霍山县| 古蔺县| 郸城县| 马公市| 汉中市| 盈江县| 潢川县| 富川| 鸡西市| 同仁县| 耒阳市| 邢台县| 海阳市| 宁南县| 如东县| 得荣县| 五家渠市| 商城县| 遂溪县| 东安县| 周口市| 新密市| 吉林市| 巴里| 江口县| 翼城县| 澳门| 凌海市| 兴宁市| 蒙自县| 长宁县| 荔波县| 蓬安县| 曲阜市| 泰和县| 汪清县| 康马县| 连城县| 黄大仙区| 堆龙德庆县| 凤城市| 宁陵县| 云梦县| 三门峡市| 民乐县| 吴忠市| 望谟县| 宜良县| 定南县| 乌拉特前旗| 两当县| 利川市| 米脂县| 毕节市| 赞皇县| 海盐县| 平江县| 邻水| 手游| 平顶山市| 绥德县| 礼泉县| 吐鲁番市| 福建省| 洛川县| 武鸣县| 门源| 环江| 荣昌县| 西贡区| 东乡| 左权县| 屏东市| 资讯| 南宁市| 德惠市| 石林| 石阡县| 怀远县| 安顺市| 安吉县| 工布江达县| 衡阳市| 靖州| 桐庐县| 莱西市| 临武县| 龙陵县| 石渠县| 许昌市| 建阳市| 达拉特旗| 双城市| 柳林县| 株洲市| 贵南县| 洮南市| 德昌县| 沙田区| 页游| 巩义市| 衡南县| 普陀区| 芮城县| 沙湾县| 琼海市| 鄢陵县| 手机| 西乡县| 随州市| 农安县| 青阳县| 民权县| 凯里市| 乌什县| 玛纳斯县| 临清市| 葫芦岛市| 罗甸县| 台江县| 虹口区| 正安县| 屏东县| 临高县| 东阳市| 蓝山县| 沿河| 淮滨县| 凌云县| 韶山市| 武宁县| 灌云县| 葵青区| 遵义县| 远安县| 固安县| 南郑县| 伊金霍洛旗| 古浪县| 日照市| 马关县| 台北县| 宜兰市| 扶风县| 潞城市| 建水县| 门头沟区| 南丹县| 晋中市| 遂溪县| 虎林市| 南溪县| 巴彦淖尔市| 南和县| 通城县| 古蔺县| 中宁县| 沧州市| 杭锦后旗| 临夏市| 宝坻区| 应用必备| 德化县| 富蕴县| 奉新县| 曲麻莱县| 定襄县| 奉节县| 大化| 麟游县| 蒲城县| 巴彦县| 满城县| 壶关县| 闸北区| 灌南县| 溧水县| 高碑店市| 广元市| 崇阳县| 逊克县| 贡觉县| 富锦市| 永兴县| 阜康市| 将乐县| 沅江市| 屏山县| 三原县| 札达县| 西藏| 亚东县| 陆河县| 祁东县| 龙胜| 龙口市| 永和县| 仁怀市| 朝阳县| 咸宁市| 任丘市| 乡城县| 北宁市| 讷河市| 博罗县| 光山县| 万源市| 洪湖市| 监利县| 客服| 高平市| 苏州市| 嘉义市| 新宁县| 怀安县| 江陵县| 波密县| 永清县| 竹溪县| 巧家县| 尼玛县| 石嘴山市| 万州区| 郧西县| 宁阳县| 吉林省| 玛纳斯县| 雅安市| 靖江市| 日土县| 军事| 论坛| 井冈山市| 苍溪县| 呼和浩特市| 兰西县| 崇明县| 云浮市| 湘潭县| 衢州市| 囊谦县| 中牟县| 康平县| 屏东市| 新宁县| 望都县| 岑溪市| 吉隆县| 肃宁县| 双桥区| 共和县| 泽库县| 澎湖县| 武威市| 阿图什市| 屯昌县| 大足县| 邳州市| 南投县| 昭觉县| 百色市| 长子县| 青岛市| 崇左市| 施秉县| 特克斯县| 中卫市| 泰顺县| 上栗县| 厦门市| 峡江县| 东乡| 林甸县| 留坝县| 广宁县| 中阳县| 大邑县| 定襄县| 济源市| 孟连| 崇信县| 甘南县| 樟树市| 泗洪县| 龙岩市| 邵阳县| 洛阳市| 白城市| 黑山县| 怀柔区| 铜梁县| 怀仁县| 陕西省| 宿松县| 梁平县| 孝义市| 永定县| 永顺县| 阳东县| 永兴县| 兴国县| 梅河口市| 融水| 平湖市| 嘉义市| 遵义市| 盐山县| 华蓥市| 晋城| 灵璧县| 尼玛县| 庆城县| 洪洞县| 芦溪县| 太仓市| 孝感市| 汉源县| 会理县| 晴隆县| 安仁县| 霞浦县| 兴海县| 清丰县| 凉城县| 浪卡子县| 瓦房店市| 禹城市| 石泉县| 阿图什市| 新营市| 时尚| 石棉县| 合水县| 松潘县| 绵阳市| 哈巴河县| 曲靖市| 黑龙江省| 会理县| 七台河市| 金塔县| 建宁县| 丰台区| 当涂县| 保靖县| 斗六市| 密山市| 芜湖县| 莱芜市| 桐乡市| 绥棱县| 西乌珠穆沁旗| 图们市| 沽源县| 泾源县| 鄢陵县| 台东县| 洛阳市| 日土县| 阳城县| 贵溪市| 鲁山县| 富源县| 景泰县| 奉贤区| 睢宁县| 柞水县| 邵武市| 共和县| 丰都县| 绍兴县| 荔波县| 河间市| 康定县| 和林格尔县| 桂林市| 石棉县| 通海县| 德阳市| 松潘县| 炉霍县| 泰安市| 宁国市| 闽侯县| 车致| 冷水江市| 库尔勒市| 陈巴尔虎旗| 娱乐| 灵丘县| 汝州市| 东城区| 苍山县| 韶关市| 福泉市| 清新县| 施秉县| 渭南市| 邛崃市| 抚州市| 霍林郭勒市| 绍兴县| 酒泉市| 贵港市| 霍州市| 册亨县| 云霄县| 中宁县| 霍林郭勒市| 息烽县| 麻栗坡县| 沽源县| 固阳县| 富川| 新兴县| 汝南县| 弋阳县| 遂昌县| 集安市| 沧源| 临邑县| 五台县| 溆浦县| 特克斯县| 双鸭山市| 罗江县| 德格县| 湄潭县| 内江市| 墨竹工卡县| 无极县| 合阳县| 个旧市| 宾川县| 彰化县| 错那县| 绥宁县| 晋城| 泰顺县| 宜兰县| 大丰市| 云安县| 武定县| 庆阳市| 额尔古纳市| 海南省| 邵阳市| 华蓥市| 甘肃省| 大名县| 竹北市| 云浮市| 清徐县| 湛江市| 怀远县| 同德县| 富裕县| 江西省| 广汉市| 丹凤县| 河津市| 寿光市| 师宗县| 林芝县| 米易县| 枝江市| 金门县| 高淳县| 呼伦贝尔市| 宽甸| 林州市| 台南市| 湖北省| 玉屏| 浑源县| 来宾市| 开鲁县| 福清市| 乐至县| 香河县| 绩溪县| 滨州市| 平和县| 定襄县| 四平市| 景东| 夏津县| 武安市| 扶沟县| 呼图壁县| 乐安县| 巧家县| 招远市| 囊谦县| 佳木斯市| 旌德县| 平顶山市| 化州市| 安塞县| 石阡县| 镇远县| 泸州市| 济源市| 抚顺市| 宁陕县| 新建县| 靖边县| 宣恩县| 秦皇岛市| 老河口市| 来宾市| 正蓝旗| 吴川市| 交城县| 二手房| 绥芬河市| 灵璧县| 江阴市| 河北区| 白水县| 措美县| 仙桃市| 泉州市| 岢岚县| 巩留县| 甘南县| 海南省| 静安区| 永川市| 宜君县| 古浪县| 乌苏市| 临潭县| 景宁| 来宾市| 泌阳县| 绍兴县| 达拉特旗| 祥云县| 梨树县| 江孜县| 武川县| 勐海县| 石家庄市| 丹江口市| 五指山市| 台东县| 天祝| 遵化市| 庆元县| 利辛县| 平湖市| 无锡市| 黑山县| 遵化市| 独山县| 德安县| 广西| 万安县| 丹寨县| 阿拉善右旗| 岑溪市| 中江县| 德江县| 抚宁县| 南昌市| 滨海县| 克东县| 鹿泉市| 筠连县| 咸丰县| 富阳市| 曲麻莱县| 双流县| 抚州市| 禄丰县| 栖霞市| 大兴区| 通许县| 富顺县| 当雄县| 孝义市| 汾西县| 行唐县| 石林| 丰镇市| 巴林右旗| 黑山县| 凌源市| 正定县| 县级市| 栖霞市| 兴城市| 县级市| 华安县| 达日县| 延寿县| 平原县| 元江| 台江县| 大方县| 萨嘎县| 大埔县| 大关县| 毕节市| 宜宾县| http://m.jx1870classv.fun http://m.jx1870cockv.fun http://m.jx1870bestv.fun http://3g.jx1870concertv.fun http://3g.jx1870cleanv.fun http://jx1870archivev.fun http://wap.jx1870catchv.fun http://m.jx1870antiquev.fun http://m.jx1870drinkv.fun http://wap.jx1870consentv.fun http://m.jx1870downv.fun http://m.jx1870answerv.fun http://wap.jx1870betterv.fun http://wap.jx1870bobv.fun http://3g.jx1870bobv.fun http://wap.jx1870diev.fun http://www.jx1870enablev.fun http://jx1870bondv.fun