1.什么是设计模式?
设计模式是人们长期以来代码规律的一种总结。
2.设计模式只有23种吗?
不,设计模式远不止23种
3.在spring中主要用到的设计模式有哪些?
工厂模式,代理模式,模板方法,单例模式,装饰模式等
4.spring中这么多设计模式有什么规律吗?
设计模式大致分为三种类型:
1、创建型 :工厂(Factory Method)、抽象工厂(Abstract Factory),建造者(Build)单例(Singleton)
2.、结构型 :代理模式(proxy)、适配器模式(Adapter)、组合(Composite)、亨员(Flewight)
3、行为型 : 解释器模式(Interpreter)、模板方法模式(Template Method)、命令模式(Command)、
责任链模式(Chain of Responsibility)、 迭代器模式(Iterator)、调解者模式(Mediator)、
备忘录模式(Memento)、 观察者模式(Observer)、状态模式(State)、
访问者模式(Visitor)
5.为什么要用设计模式,不用设计模式就不能做事吗?
1、设计模式不是一定要用的(不能去生搬硬套),只有在适当的业务应用场景的时候才去用(什么是适当:个人经验,对设计模式的理解)
eg.为什么要用抽象工厂模式?(一个生产牛奶的工厂,生产N中牛奶,有蒙牛、伊利、特仑苏等)。我现在作为顾客,我只需告诉工厂我需要什么牛奶,工厂给我什么具体牛奶就够了,我不用去关注你的牛奶生产的具体过程(从奶牛上取牛奶,过滤,加工,包装等一系类流程),我只要关注我最终拿到的是我想要的牛奶。
作为终端我需要做的可能就是getMilk(String MilkName);通过传入名称获取我需要的牛奶。
public class Test
{
public static void main(String[] args) {
Factory factory=new Factory();
System.out.println(factory.getMengliu()+"需要什么拿什么!");
}
}
-------------我们的做法第一步是:定义一个生产牛奶的接口(我们目前不能确定我们生产的是什么牛奶,什么配比,什么流程,让子类去实现)
public interface Milk()
{
Milk getMilk();
}
-----------我们现在需要生产伊利牛奶的话
public class YiLi implements Milk {
@Override
public Milk milkMilk() {
return new YiLi();
}
}
-----生产蒙牛牛奶
public class MengLiu implements Milk {
@Override
public Milk milkMilk() {
return new MengLiu();
}
}
------生产特仑苏牛奶
public class TeLunSu implements Milk {
@Override
public Milk milkMilk() {
return new TeLunSu();
}
}
-----我们有了牛奶之后,我们应该把我们的牛奶让外界知道,好让外界购买我们的牛奶,再次之前我们应该整理下我们生产的牛奶:
public abstract class AbstractMilkFactory {
public abstract Milk getMengliu();
public abstract Milk getYiLi();
public abstract Milk getTeLunSu();
}
public class Factory extends AbstractMilkFactory {
@Override
public Milk getMengliu() {
// TODO Auto-generated method stub
return new MengLiu();
}
@Override
public Milk getYiLi() {
// TODO Auto-generated method stub
return new YiLi();
}
@Override
public Milk getTeLunSu() {
// TODO Auto-generated method stub
return new TeLunSu();
}