* 今天開始設計模式之旅。設計模式是一些有經驗的前輩所總結出來的開發軟件的經驗。
* 設計模式包括6大設計原則和23種設計模式,隨著軟件開發的深入,后來又有了一些新的設計模式出現。
* 我目前還沒有太多的開發經驗,但是這也不妨礙我對設計模式的理解和學習,因為在基本了解一下設計模式之后
* 我在遇到開發難題時,就可以借鑒這些設計模式來熟練應用到場景中。
* 學習設計模式借鑒的書籍《設計模式之禪》。這本書對設計模式講解的很透徹,對于初學者有很大的好處,
* 然后我的目標是,每天至少學習一片設計模式,并用代碼實現,注釋講解清晰,寫成博客。
* 同時還要借鑒博客中對設計模式有深刻理解的博文進行在學習。
第一大設計原則:
## 單一職責原則(Single Responsibility Principle)
**定義:應該有且僅有一個原因引起類的變更。**
我的理解:盡可能的將對象劃分成單一性的類別,使類的復雜性降低,實現什么職責都有清晰明確的定義
------------給出一個例子。
在設計中用戶 管理、修改用戶的信息、增加機構、增加角色等。
按照用戶的業務對象和業務邏輯來進行類和接口的劃分。

UserBiz.java
~~~
package hpu.lzl.srp;
/**
* UserBiz(業務邏輯 Business Logic)
* 將IUserInfo中的屬于業務邏輯的類抽象成獨立的接口。
*/
public interface IUserBiz{
//這個是業務邏輯的方法
boolean changePassword(String oldPassword);
boolean deleteUser();
void mapUser();
boolean addOrg(int orgID);
boolean addRole(int roleID);
}
~~~
IUserBO.java
~~~
package hpu.lzl.srp;
/*
* 用戶的Business Object(業務對象).
* 將IUserInfo中的屬于業務對象的一些方法抽象出來,形成獨立的接口。
*/
public interface IUserBO{
void serUserID(String userID);
String getUserID();
void setPassword(String password);
String getPassword();
void setUserName(String name);
String getUserName();
}
~~~
IUserInfo.java
~~~
package hpu.lzl.srp;
/**
* 這里是用戶的所用信息以及操作的接口。
* 它繼承自IUserBO和IUserBiz。
* 以便于用擁有所有的邏輯操作。
* @author admin
*
*/
public interface IUserInfo extends IUserBO,IUserBiz{
}
~~~
UserInfo.java
~~~
package hpu.lzl.srp;
public class UserInfo implements IUserInfo{
private String userID;
private String password;
private String userName;
@Override
public void serUserID(String userID) {
// TODO Auto-generated method stub
this.userID = userID;
}
@Override
public String getUserID() {
// TODO Auto-generated method stub
return userID;
}
@Override
public void setPassword(String password) {
// TODO Auto-generated method stub
this.password = password;
}
@Override
public String getPassword() {
// TODO Auto-generated method stub
return password;
}
@Override
public void setUserName(String name) {
// TODO Auto-generated method stub
this.userName = name;
}
@Override
public String getUserName() {
// TODO Auto-generated method stub
return userName;
}
@Override
public boolean changePassword(String oldPassword) {
System.out.println("改變密碼,"+oldPassword);
return false;
}
@Override
public boolean deleteUser() {
System.out.println("刪除密碼,"+false);
return false;
}
@Override
public void mapUser() {
// TODO Auto-generated method stub
System.out.println("用戶map");
}
@Override
public boolean addOrg(int orgID) {
System.out.println("添加機構"+orgID);
return false;
}
@Override
public boolean addRole(int roleID) {
System.out.println("添加角色,"+roleID);// TODO Auto-generated method stub
return false;
}
}
~~~
UserTest.java
~~~
public class UserTest{
public static void main(String[] args) {
IUserInfo userInfo = new UserInfo();
//我要是為用戶賦值,那么他是一個純粹的BO
IUserBO userBO = (IUserBO)userInfo;
userBO.setPassword("hhh");
//我如果要執行動作,你們他是一個業務邏輯類
IUserBiz userBiz = (IUserBiz) userInfo;
userBiz.addOrg(123);
}
}
~~~
我理解的單一職責原則就是,在開發過程中設計類或接口時,盡量要將這些類和接口的職責唯一、明確。這樣在進行合作開發時,不僅自己能夠快速明確自己的目的,其他合作開發的程序員也能夠明白你的意思。這樣同樣也可以降低代碼的耦合性,有利于后期代碼的維護。
- 前言
- 6大設計原則(一)---單一職責原則
- 6大設計原則(二)---里氏替換原則
- 6大設計原則(三)---依賴倒置原則
- 6大設計模式(四)----接口隔離原則
- 6大設計原則(五)---迪米特法則
- 6大設計原則(六)---開閉原則。
- 設計模式(一)---單例模式
- 設計模式(二)---工廠方法模式
- 設計模式(三)---抽象工廠模式
- 設計模式(四)---模板方法模式
- 設計模式(五)---建造者模式
- 設計模式(六)---代理模式
- 設計模式(七)---原型模式
- 設計模式(八)---中介者模式
- 設計模式(九)---命令模式
- 設計模式(十)---責任鏈模式
- 設計模式(十一)---裝飾模式
- 設計模式(十二)---策略模式
- 設計模式(十三)---適配器模式
- 設計模式(十四)---迭代器模式
- 設計模式(十五)---組合模式
- 設計模式(十六)---觀察者模式
- 設計模式(十七)---門面模式
- 設計模式(十八)---備忘錄模式
- 設計模式(十八)---訪問者模式
- 設計模式(二十)---狀態模式
- 設計模式(二十二)---享元模式
- 設計模式(二十三)---橋梁模式