【设计模式】开闭原则
生活随笔
收集整理的這篇文章主要介紹了
【设计模式】开闭原则
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
開閉原則
看如下的例子,如果要求再擴展一個功能,比如利用163發,那么需要在添加一個類,在sendEmail中添加一個方法,在同類print中繼續添加代碼。這就未必了對修改關閉的原則。改動地方太多,耦合性增加,也不符合單一職責原則。
class Email2 {int e_type; } class QQ extends Email2{QQ(){super.e_type = 1;} }class Google extends Email2{Google(){super.e_type = 2;} }class SendEmail{public void print(Email2 e) {if(e.e_type == 1) send2();else send1();}public void send1() {System.out.println("Google發郵箱");}public void send2() {System.out.println("QQ發郵箱");} } public class OCPrinciple {public static void main(String[] args) {SendEmail sendEmail = new SendEmail();sendEmail.print(new QQ());sendEmail.print(new Google());} }改為符合開閉原則的代碼
改進后的代碼,只需要將Email改為一個抽象類,添加一個抽象方法send,添加一個SouHu類作為擴展即可。
abstract class Email2 {int e_type;public abstract void send(); } class QQ extends Email2{QQ(){super.e_type = 1;}public void send() {System.out.println("QQ發郵箱");} }class Google extends Email2{Google(){super.e_type = 2;}public void send() {System.out.println("Google發郵箱");} }class SouHu extends Email2{SouHu() {super.e_type = 3;}public void send() {System.out.println("SouHu發郵箱");} }class SendEmail{public void print(Email2 e) {e.send();} } public class OCPrinciple {public static void main(String[] args) {SendEmail sendEmail = new SendEmail();sendEmail.print(new QQ());sendEmail.print(new Google());sendEmail.print(new SouHu());} }總結
以上是生活随笔為你收集整理的【设计模式】开闭原则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【设计模式】里氏替换原则
- 下一篇: 【设计模式】迪米特法则和六种原则的总结