1. 程式人生 > >設計模式之開閉原則

設計模式之開閉原則

override cati 聖誕 turn extension span 核心 inter open

開放封閉原則(Open Close Principle,簡稱OCP)盡量通過擴展軟件實體的行為來實現變化,而不是通過修改已有的代碼來實現變化

原始定義:Software entities (classes, modules, functions) should be open for extension but closed for modification。

核心思想: 盡量通過擴展軟件實體來解決需求變化,而不是通過修改已有的代碼來完成變化

通俗來講: 一個軟件產品在生命周期內,都會發生變化,既然變化是一個既定的事實,我們就應該在設計的時候盡量適應這些變化,以提高項目的穩定性和靈活性

比如現在聖誕節,搞活動打折,有以下幾種做法:

1.新增打折接口

2.修改原油NewBook類

3.新增打折書籍類

按照開放擴展關閉修改原則,應該是第三種方案,這樣原有代碼不會受到修改。

//書籍接口
public
interface IBook { String getBookName(); String getAuthor(); int getPrice(); } //書籍類 public class NewBook implements IBook { private String bookName; private String author;
private int price; public NewBook(String bookName, String author, int price){ this.bookName = bookName; this.author = author; this.price = price; } @Override public String getBookName() { return this.bookName; } @Override
public String getAuthor() { return this.author; } @Override public int getPrice() { return this.price; } } //打折書籍類 public class OffBook extends NewBook { public OffBook(String bookName, String author, int price) { super(bookName, author, price); } public Double getPrice2(){ return this.getPrice()*0.7; } }

設計模式之開閉原則