java中常用的23中设计模式(简述)

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();
    }

 

 


                       

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值