![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
Pr Young
一个踏实努力,充满激情的程序员!
展开
-
设计模式之工厂模式
Computer computer=shopAssistant.suggest("打游戏");//new 一个外星人电脑的实例。工厂模式就是简单工厂模式,引入工厂类,客户端只需要new 一个工厂对象即可。原创 2023-05-31 17:24:51 · 54 阅读 · 0 评论 -
策略模式(Strategy)
如果传进Context类对象的是ConcreteStrategy1类的对象,那执行的就是策略1。如果传进Context类对象的是ConcreteStrategy2类的对象,那执行的就是策略2。step3:再创建一个上下文类:(传入哪个具体策略类的对象,就调用哪个具体策略的方法)总共1个接口,两个实现类,还有一个上下文类(总共三个类)step2:两个类都实现这个接口:(两个具体策略)step1:一个接口(抽象策略)原创 2022-10-13 12:59:55 · 103 阅读 · 0 评论 -
代理模式Proxy (非常容易看懂)
而是在Client中new一个Proxy类的对象,调用这个对象的rent方法,而这个对象的rent方法又会调用Host类对象的rent方法。其实就是:不是在Client中直接new一个Host类的对象,调用这个对象的rent方法。代理类:实现接口,有一个属性是Host类的对象,还有一些其他的方法。房东类实现出租方法:(很简洁,只干一件事)代理模式有静态代理模式和动态代理模式。所谓代理就是让别人帮助你做一些事。原创 2022-09-02 13:32:38 · 444 阅读 · 0 评论 -
设计模式之策略模式
这里就是通过调用TypeChoose这个类的getSaver方法(返回的是一个ImageSaver接口的对象),传入不同的参数,来调用不同的方法。当传入的字符串是JPEG的时候:相当于:ImageSave saver=new JPEGSaver()当传入的字符串是GIF的时候:相当于:ImageSave saver=new GIFSaver()当传入的字符串是PNG的时候:相当于:ImageSave saver=new PNGSaver()每个算法(策略)封装到不同的类里面去(这些类实现同一个接口)原创 2022-08-23 17:18:50 · 47 阅读 · 0 评论 -
简单工厂模式
3)工厂类:负责创建不同产品类的实例,工厂类有一个createProduct()方法,根据传进来的参数不同,产生不同类的实例。被创建的实例通常具有相同的父类(这表明各种各样的产品类其实都属于同一大类)就像工厂根据产品的图纸来生产产品,工厂类专门负责创建其他类实例。也就是说简单工厂模式其实就是创建某一大类下面不同类的实例。比如:传进来字符串‘A’,就产生产品A这个类的实例。(2)产品类的子类产品A类,产品类的子类产品B类。传进来字符串‘B’,就产生产品B这个类的实例。根据参数的不同,返回不同类的实例。...原创 2022-08-15 22:36:49 · 71 阅读 · 0 评论 -
设计模式-单例模式
构造方法一定不是公开的(public),不能被外界实例化,所以构造方法只能时private。其实一旦被实例化之后,下次判断singleton对象就不可能为空了,就不会进行实例化了。当创建一个对象需要消耗很多资源的时候,就可以使用单例模式来减少资源的消耗。上面加的锁,同步处理的范围是整个方法,但是我们的实例化仅仅发生在第一次。单例模式的问题:全局共享一个变量,相当于全局变量,程序到处都可以更改。懒汉式:在类加载的时候不进行实例化,在第一次使用的时候进行实例化。饿汉式是在类加载的时候进行实例化。........原创 2022-08-14 23:56:21 · 77 阅读 · 0 评论 -
适配器模式(Adapter模式)
将一个类的接口转换为客户希望的另外一个接口 适配器分为类适配器模式和对象适配器模式(前者应用较少) 适配器模式中主要包括三个角色: (1)目标接口 :当前系统业务所期待的接口 (2)适配者类:现存的接口 (3)适配器类:转换器,将适配者接口转化为目标接口 其实是旧的接口希望通过适配器类,实现适配者类中的功能,成为一个新的接口 旧的接口,没有适配者中的功能(只有request方法) 新的接口,有适配者中的功能(千方百计想能够调用specificRequest方法) 1.类适配器模式.原创 2022-05-13 23:33:09 · 410 阅读 · 0 评论