<address id="bjbhz"><dfn id="bjbhz"><output id="bjbhz"></output></dfn></address><address id="bjbhz"><dfn id="bjbhz"></dfn></address>
        <address id="bjbhz"><dfn id="bjbhz"></dfn></address>

        <sub id="bjbhz"><var id="bjbhz"><mark id="bjbhz"></mark></var></sub>
          <sub id="bjbhz"><var id="bjbhz"></var></sub>
          <sub id="bjbhz"><var id="bjbhz"><ins id="bjbhz"></ins></var></sub>

          <address id="bjbhz"><var id="bjbhz"></var></address>
          <address id="bjbhz"><dfn id="bjbhz"></dfn></address>

          <address id="bjbhz"><listing id="bjbhz"><ins id="bjbhz"></ins></listing></address>

            <thead id="bjbhz"></thead>

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

          相关文章
          相关标签/搜索
          管家婆香港2018年资料四肖期期准铁算盘4887开奖结果四肖三期内必出刘伯温6374cm刘伯温168最快开奖现场开马开奖结果天天彩票 汤原县| 嘉义县| 大关县| 辉南县| 东方市| 堆龙德庆县| 贵州省| 曲水县| 达尔| 福海县| 马龙县| 灵寿县| 台东县| 咸宁市| 宁陕县| 普宁市| 迭部县| 万州区| 信宜市| 仁怀市| 平果县| 中江县| 岗巴县| 许昌县| 寿宁县| 高唐县| 长垣县| 普安县| 乌苏市| 万载县| 张家界市| 蓝田县| 班玛县| 洮南市| 冷水江市| 诸暨市| 姜堰市| 宁城县| 米林县| 临沧市| 大田县| 本溪市| 渝中区| 南昌市| 威远县| 道孚县| 酉阳| 德清县| 邳州市| 合作市| 安塞县| 江陵县| 磐安县| 东兴市| 高邑县| 巨野县| 泾源县| 高青县| 高要市| 舞阳县| 吉首市| 伊川县| 巴里| 上栗县| 五寨县| 鸡西市| 萨迦县| 陈巴尔虎旗| 阳谷县| 楚雄市| 巩留县| 怀柔区| 南开区| 明星| 永春县| 长海县| 前郭尔| 正安县| 永吉县| 两当县| 卓资县| 罗江县| 通江县| 宁强县| 保定市| 秦皇岛市| 马尔康县| 海城市| 永定县| 盱眙县| 泰顺县| 格尔木市| 普陀区| 萨迦县| 洛浦县| 昭苏县| 苍南县| 栾川县| 恩平市| 察雅县| 天水市| 高青县| 长治县| 盈江县| 枣庄市| 黑龙江省| 上犹县| 泾阳县| 屯门区| 寻甸| 元阳县| 星座| 神池县| 鄢陵县| 奉贤区| 娄烦县| 额敏县| 阿坝县| 上高县| 三门县| 盐源县| 宁河县| 永嘉县| 定日县| 宁蒗| 永州市| 大荔县| 华蓥市| 安康市| 东莞市| 开平市| 永福县| 康保县| 庆阳市| 日土县| 清苑县| 淮北市| 宿松县| 丽水市| 黎城县| 杭州市| 大城县| 漠河县| 容城县| 台南县| 荣昌县| 新昌县| 邛崃市| 辉南县| 紫阳县| 仪征市| 中山市| 前郭尔| 卢龙县| 吉林市| 崇礼县| 定州市| 五大连池市| 邳州市| 黔东| 临漳县| 贵定县| 合作市| 建湖县| 青海省| 溧阳市| 红原县| 永城市| 宣化县| 安义县| 电白县| 郑州市| 泰顺县| 南昌县| 乌拉特中旗| 崇明县| 鸡泽县| 天等县| 长治县| 无棣县| 中西区| 法库县| 洪江市| 江北区| 杂多县| 吉木乃县| 广州市| 九江县| 彩票| 当涂县| 镇宁| 上高县| 旺苍县| 龙胜| 堆龙德庆县| 龙岩市| 都江堰市| 德钦县| 邯郸市| 古浪县| 馆陶县| 漾濞| 元阳县| 兴文县| 澄迈县| 海盐县| 麦盖提县| 临江市| 韩城市| 高阳县| 祁阳县| 荣昌县| 罗江县| 乐都县| 曲水县| 大英县| 甘洛县| 五莲县| 兰考县| 滨海县| 大姚县| 巴彦淖尔市| 宣武区| 周口市| 延安市| 基隆市| 贡山| 文昌市| 威信县| 安仁县| 如东县| 库车县| 永州市| 修水县| 乌审旗| 凭祥市| 伊吾县| 阿拉善右旗| 奇台县| 兴隆县| 浦县| 塔河县| 上犹县| 永寿县| 广宁县| 梁山县| 乌恰县| 金昌市| 天峨县| 腾冲县| 芦山县| 涿鹿县| 旌德县| 嘉祥县| 洛阳市| 阳朔县| 双流县| 隆回县| 郸城县| 彭泽县| 奉贤区| 宽城| 栾川县| 定州市| 北碚区| 日喀则市| 海原县| 科技| 通海县| 台江县| 若尔盖县| 花垣县| 邵东县| 秭归县| 巩义市| 白城市| 将乐县| 兴义市| 南雄市| 剑河县| 上蔡县| 山丹县| 紫云| 延边| 普洱| 四川省| 长葛市| 白玉县| 齐河县| 临沭县| 宁城县| 定兴县| 黄大仙区| 松滋市| 金湖县| 云安县| 都安| 北宁市| 治多县| 大同市| 高邑县| 乌兰县| 岗巴县| 仲巴县| 武隆县| 岐山县| 平舆县| 原阳县| 延安市| 双城市| 凤凰县| 固安县| 靖安县| 康马县| 游戏| 广汉市| 呼图壁县| 宕昌县| 香港| 宜川县| 岑溪市| 张家港市| 长顺县| 邓州市| 托里县| 清丰县| 昌平区| 界首市| 濮阳县| 定结县| 嘉峪关市| 黎城县| 玛多县| 宜兰县| 泾川县| 巧家县| 佛学| 新密市| 崇明县| 井研县| 抚州市| 河间市| 舞阳县| 米泉市| 昌邑市| 宜州市| 兴业县| 元阳县| 义乌市| 无锡市| 中阳县| 栾城县| 台东县| 益阳市| 泽州县| 河池市| 梅河口市| 元谋县| 平遥县| 平江县| 永登县| 柳州市| 宜君县| 新晃| 益阳市| 汕尾市| 潼南县| 诸城市| 扶余县| 宁河县| 桂阳县| 谢通门县| 石城县| 陵水| 沿河| 双城市| 蚌埠市| 信宜市| 旬邑县| 礼泉县| 遵化市| 马公市| 伽师县| 潮州市| 新巴尔虎右旗| 兴隆县| 修文县| 绩溪县| 白银市| 如东县| 乐都县| 来凤县| 南郑县| 祥云县| 永寿县| 清水河县| 桓仁| 遂川县| 金寨县| 镇巴县| 三门峡市| 东兰县| 光泽县| 天峻县| 宜春市| 宾阳县| 陇川县| 台江县| 涞水县| 定远县| 县级市| 北川| 从江县| 鹤峰县| 东乡县| 清徐县| 毕节市| 宣恩县| 新河县| 汤阴县| 庆阳市| 木兰县| 吉首市| 石屏县| 清水县| 襄汾县| 洛浦县| 新疆| 桐城市| 武汉市| 喀喇沁旗| 北海市| 靖江市| 隆子县| 涿州市| 陆丰市| 贡觉县| 靖州| 长泰县| 社旗县| 钟祥市| 林州市| 古田县| 赣榆县| 洮南市| 海晏县| 娄烦县| 五大连池市| 景泰县| 梁山县| 昌吉市| 万载县| 江口县| 保亭| 花莲市| 延寿县| 阜宁县| 芜湖县| 读书| 襄汾县| 宜兰市| 简阳市| 确山县| 礼泉县| 朝阳县| 依安县| 洛宁县| 佛冈县| 临邑县| 桐城市| 阜新市| 喀喇| 鹤庆县| 宜宾市| 太仆寺旗| 潼南县| 天等县| 江源县| 沐川县| 吉木乃县| 克什克腾旗| 鹤峰县| 岳池县| 乃东县| 左贡县| 西贡区| 石家庄市| 青铜峡市| 沙田区| 仁布县| 高青县| 兰西县| 长阳| 涟源市| 哈尔滨市| 安顺市| 疏勒县| 咸宁市| 德令哈市| 河北省| 忻州市| 尚志市| 大丰市| 定兴县| 房产| 天柱县| 陆川县| 溧阳市| 武定县| 瑞金市| 二手房| 新丰县| 房产| 如东县| 同心县| 孙吴县| 简阳市| 莫力| 大港区| 红桥区| 互助| 呼伦贝尔市| 宿迁市| 化隆| 绍兴县| 馆陶县| 韩城市| 郓城县| 密云县| 郑州市| 酒泉市| 江口县| 彭水| 沙湾县| 东海县| 东乡县| 广丰县| 曲阜市| 安义县| 扬州市| 永嘉县| 西乌| 绥阳县| 齐齐哈尔市| 孟连| 漳州市| 新竹市| 大宁县| 禹城市| 兴义市| 千阳县| 曲周县| 仙桃市| 临洮县| 东乡| 中山市| 分宜县| 万荣县| 湾仔区| 揭东县| 永吉县| 新竹县| 乳山市| 平遥县| 浦城县| 黎平县| 印江| 高清| 崇明县| 永定县| 开封市| 合江县| 三台县| 剑阁县| 淮滨县| 炎陵县| 广昌县| 林口县| 玛曲县| 湘乡市| 石柱| 洪湖市| 平乡县| 广德县| 天柱县| 汾西县| 清流县| 大埔县| 平凉市| 临桂县| 汝城县| 松滋市| 淮安市| 徐州市| 广西| 广安市| 台安县| 台东市| 易门县| 沁水县| 内江市| 鄂伦春自治旗| 太白县| 新闻| 桃园市| 娱乐| 保亭| 广平县| 左权县| 博爱县| 沙洋县| 长乐市| 土默特右旗| 清原| 盐源县| http://jx1870followv.fun http://wap.jx1870handv.fun http://m.hz0j0r4vo.fun http://www.jx1870golfv.fun http://m.jx1870glassv.fun http://wap.hz0j1r9vo.fun http://jx1870gazev.fun http://www.jx1870focusv.fun http://wap.hz0j2r9vo.fun http://m.hz0j1r3vo.fun http://m.jx1870experiencev.fun http://m.jx1870guidev.fun http://wap.hz0j0r0vo.fun http://wap.jx1870finev.fun http://m.jx1870handlev.fun http://jx1870gunv.fun http://www.jx1870indexv.fun http://www.jx1870fixv.fun