### 《大话设计模式》
前一段时间读过一阵这本书,但是那是还没有什么面向对象的概念,而且对于设计模式什么的都一窍不通。。。现在感觉懂一点了,所以想写一点东西,和大家一起分享一下我的感受!
以前感觉代码只要实现了自己想要达到的功能就ok了,哪还管什么复用性,耦合性啊,可是开发时间越久就越感觉设计模式是如此的重要,尤其现在越来越多的多人开发项目,要是设计模式用好了,可是少些很多的代码,而且可以让 复制粘贴 消失在我们的代码里!!!
从今天开始我尽量每两天读一章《大话》,然后写一篇博文与大家分享,法定节假日除外。。。
代码的话我就根据《大话》然后自己写java的伪代码,在最后会用一个自己在现实中碰到的问题来解释用处。
### 封装&多态&继承
这是面向对象的三大特性,通过这三者,可以把程序的藕合度降低,增加程序的复用性,而且容易修改和扩展!
就已书上计算器的代码为例
~~~
public class Operation
{
//存放属性,及用于计算的两个数get,set方法和获得答案的方法(被重写的方法)
}
public class AddOper extends Operation
{
//重写获得答案的方法——做两个数的加法运算
}
public class SubOper extends Operation
{
//重写获得答案的方法——做两个数的减法运算
}
public class MulOper extends Operation
{
//重写获得答案的方法——做两个数的乘法运算
}
public class DivOper extends Operation
{
//重写获得答案的方法——做两个数的除法运算
}
~~~
这样子写完后想增加方法就很简单了,只需要增加一个类去继承Operation类然后重写计算的方法就可以了,而且这几个类 都是可以重复调用的,在控制台程序,界面程序,手机程序中都可以
### 简单工厂模式
感觉简单工厂模式多用于 解决对象的创建 问题。比如你写了一些类,但是到底创建哪一个类?实例化对象的时候会不会因为创建太多了弄混?这个时候就应该考虑用一个 单独的类来做这个创建实例的过程(摘抄书上) 这就是工厂!
~~~
public class OperFactory
{
public static Operation createOper (String opreate)
{
// 通过传入的符号判断调用哪一个方法最后返回当前需要调用的对象
switch(opreate)
{
case "+":
return new AddOperation();//加法对象
case "-":
case "*":
case "/":
}
}
}
~~~
由于这几个操作类都是继承于父类Operation,所以在使用时只需要用一个Opreation去接收就可以了
~~~
Operation oper = OperFactory.createOper("+");
~~~
这样这个oper就是加法类了,如果需要乘法,除法,减法,只需要往工厂对象中传参数就可以了
### 举例说明
在开发过程中会碰到很多需要用到工厂,例如在网络访问中,最近就接了一个这样的项目,需要去访问服务器获取数据,我觉得用工厂模式会好很多,网络访问属性是差不多的,差别只在于访问的地址和调用的方法有一点点区别,所以就可以抽一个父类出来,如果增加一个需要访问的页面,那么增加一个类,再增加工厂的选项就可以了,这样增加或者修改当前类,对于别的类就不会有影响!
~~~
public class Net
{
URL;
doURL();
}
public class Baidu extends Net
{
doURL()
{
打开贴吧!
}
}
public class Google extends Net
{
doURL()
{
打开Google地图!
}
}
。。。。
public class NetFac
{
public static createNet(标签)
{
根据标签判断生成哪一个对象
}
}
~~~
也许大家现在看,可能觉得代码很冗余,感觉没多大的好处,但是很简单的一个例子,你现在去调用Net,那么你只需要知道传一个参数给工厂类就够了,完全不需要知道有哪一些类,这在多人开发的时候有很大的好处,因为这样写,两人互不影响,你去实现你的网页类,我只管调用工厂类就可以了,这个例子只是我浅显的理解,它的好处真的需要大家自己再编码中才能体会到!!!
### 总结
还是比较推荐大家去看一下《大话》这本书,感觉这本书说的内容都比较浅显,对于设计模式的解释也比我好和专业许多,我写这个博文的意义只在于增强自己对于设计模式的理解,同时举个例子可以供大家参考一下,设计模式再别的地方的用途!
- 前言
- (1)代码无错就是优?——简单工厂模式
- (2)商场促销——策略模式
- (3)&(4)&(5) 设计模式原则
- (6)穿什么有这么重要?——装饰模式
- (7)为别人做嫁衣——代理模式
- (8)雷锋依然在人间——工厂方法模式
- (9)简历复印——原型模式
- (10)考题抄错会做也白搭——模板方法模式
- (11)迪米特法则
- (12)牛市股票还会亏钱?—— 外观模式
- (13)好菜每回味不同——建造者模式
- (14)老板回来,我不知道——观察者模式
- java实现事件委托
- (15)就不能不还DB吗?—— 抽象工厂模式
- (16)无尽加班何时休息——状态模式
- (17)在NBA我需要翻译——适配器模式
- (18)如果再回到从前——备忘录模式
- (19)分公司=部门——组合设计模式
- (20)想走?可以!先买票——迭代器模式
- (21)有些类也需计划生育——单例模式
- (22)手机软件何时统一——桥接模式
- (23)烤羊肉串引来的思考——命令模式
- (24)加薪非要老总批?——职责链模式
- (25)世界需要和平——中介者模式
- (26)项目多也别傻做——享元模式
- (28)男人和女人——访问者模式