对于简单工厂模式的补充:面向对象的编程,并不是类越多越好,类的划分是为了封装,但是分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类(摘抄)。举个简单的例子,用baidu和google去搜csdn,这时就没有必要去创建两个类,只需要创建一个类,穿一个页面的地址进去就行,因为操作的方法是一样的,都是搜索csdn,只是网址的差别。
### 策略模式
它定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化,不会影响使用算法的客户(摘抄)。
我感觉策略模式就是纯封装算法的模式,把要实现同一个目的,但是达到目的的方式不同。
还是用昨天的计算的例子来举例算了,这样可以比较简单的看出来两种模式的对比。
工厂模式是把加减乘除当成不同的概念,策略模式是把加减乘除当作不同的方法,它们都属于计算这个概念。
~~~
//策略模式就要先生成一个策略类(抽象类)
public abstract class Operation
{
public abstract double oper(int a,int b);
}
public class Add extends Operation
{
@Override
public double oper(int a,int b)
{
//加法方法
}
}
......
//省略号后面分别实现减,乘,除
~~~
算法类都写完之后,这时就要写一个使用的类了
~~~
public class domethod
{
Operation op = null;
public select(String type)
{
switch (type) {
case "+":
op = new Add();
break;
......
}
}//与简单工厂模式结合
public double result (double a,double b)
{
return op.oper(a,b);
}
}
~~~
在计算器调用操作类时
~~~
Domethod method = new Domethod();
method.select("+");
method.result(1,2);
~~~
这样使用策略模式和简单工厂模式的结合就只需要实例化一个类就可以了,而单纯的简单工厂模式需要实例化父类和工厂类
这个样子,代码的藕合度又降低了
### 总结
策略模式结合简单工厂模式使用,可以使藕合度比单纯的使用简单工厂模式低!
策略模式的用处在于需要在不同的时候使用不同业务规则!(摘抄)
个人理解策略于简单工厂模式的区别,简单工厂模式分离的是对象,而策略模式分离的是规则(所以父类中没有属性),用同一个例子使用两种模式,也代表了两种不一样的面向对象的理解,抽象的层次不一样。
- 前言
- (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)男人和女人——访问者模式