西遊記之設計模式原則——單一職責原則
阿新 • • 發佈:2017-12-25
void 可能 equals main person 方法 隱患 客戶端代碼 p s
單一職責原則
——專心致誌只做一件事
1 package danyizhize; 2 3 class SunWuKong { 4 public void XiangMo(String name) { 5 System.out.println(name + "降魔!"); 6 } 7 8 public void XingLi(String name) { 9 System.out.println(name + "拿行李!"); 10 } 11 12 public void QianMa(String name) {View Code13 System.out.println(name + "牽白龍馬!"); 14 } 15 16 public void QiMa(String name) { 17 System.out.println(name + "騎馬!"); 18 } 19 } 20 21 public class DanYiZhiZe { 22 23 public static void main(String[] args) { 24 // TODO Auto-generated method stub 25 SunWuKong sunWuKong = newSunWuKong(); 26 sunWuKong.XiangMo("孫悟空"); 27 sunWuKong.QianMa("孫悟空"); 28 sunWuKong.XingLi("孫悟空"); 29 sunWuKong.QiMa("孫悟空"); 30 } 31 }
運行結果:
孫悟空降魔!
孫悟空牽白龍馬!
孫悟空拿行李!
孫悟空騎馬!
孫悟空的任務太多,忙不過來!!!
1 package danyizhize; 2 3 class SunWuKong { 4 publicView Codevoid XiangMo(String name) { 5 System.out.println(name + "降魔!"); 6 } 7 } 8 9 class ZhuBaJie { 10 public void QianMa(String name) { 11 System.out.println(name + "牽白龍馬!"); 12 } 13 } 14 15 class ShaHeShang { 16 public void XingLi(String name) { 17 System.out.println(name + "拿行李!"); 18 } 19 } 20 21 class TangSeng { 22 public void QiMa(String name) { 23 System.out.println(name + "騎馬!"); 24 } 25 } 26 27 public class DanYiZhiZe { 28 29 public static void main(String[] args) { 30 // TODO Auto-generated method stub 31 SunWuKong sunWuKong = new SunWuKong(); 32 ZhuBaJie zhuBaJie = new ZhuBaJie(); 33 ShaHeShang shaHeShang = new ShaHeShang(); 34 TangSeng tangSeng = new TangSeng(); 35 36 sunWuKong.XiangMo("孫悟空"); 37 zhuBaJie.QianMa("豬八戒"); 38 shaHeShang.XingLi("沙和尚"); 39 tangSeng.QiMa("唐僧"); 40 } 41 }
運行結果:
孫悟空降魔!
豬八戒牽白龍馬!
沙和尚拿行李!
唐僧騎馬!
改動大,將原有的1個類變成了4個類,還需要修改客戶端代碼!!!
1 package danyizhize; 2 3 class Person { 4 public void Work(String name) { 5 if ("孫悟空".equals(name)) { 6 System.out.println(name + "降魔!"); 7 } else if ("豬八戒".equals(name)) { 8 System.out.println(name + "牽白龍馬!"); 9 } else if ("沙和尚".equals(name)) { 10 System.out.println(name + "拿行李!"); 11 } else if ("唐僧".equals(name)) { 12 System.out.println(name + "騎馬!"); 13 } 14 } 15 } 16 17 public class DanYiZhiZe { 18 19 public static void main(String[] args) { 20 // TODO Auto-generated method stub 21 Person person = new Person(); 22 23 person.Work("孫悟空"); 24 person.Work("豬八戒"); 25 person.Work("沙和尚"); 26 person.Work("唐僧"); 27 } 28 }View Code
運行結果:
孫悟空降魔!
豬八戒牽白龍馬!
沙和尚拿行李!
唐僧騎馬!
如果再增加其他人,很有可能變成孫悟空做飯,操作簡單,卻存在隱患!!!
1 package danyizhize; 2 3 class Person { 4 public void XiangMo(String name) { 5 System.out.println(name + "降魔!"); 6 } 7 8 public void XingLi(String name) { 9 System.out.println(name + "拿行李!"); 10 } 11 12 public void QianMa(String name) { 13 System.out.println(name + "牽白龍馬!"); 14 } 15 16 public void QiMa(String name) { 17 System.out.println(name + "騎馬!"); 18 } 19 } 20 21 public class DanYiZhiZe { 22 23 public static void main(String[] args) { 24 // TODO Auto-generated method stub 25 Person person = new Person(); 26 person.XiangMo("孫悟空"); 27 person.QianMa("豬八戒"); 28 person.XingLi("沙和尚"); 29 person.QiMa("唐僧"); 30 } 31 }View Code
孫悟空降魔!
豬八戒牽白龍馬!
沙和尚拿行李!
唐僧騎馬!
需要足夠簡單的邏輯,才可以在代碼上違反單一職責原則;
需要類中方法數量足夠少,才可以在方法級別上違反單一職責原則。
西遊記之設計模式原則——單一職責原則