博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式
阅读量:6970 次
发布时间:2019-06-27

本文共 1962 字,大约阅读时间需要 6 分钟。

代理模式 将realImage通过proxyImage来调用。

realImage与proxyImage在功能上是等价的,没有新增和减少功能。

 

适配器模式  VlcPlayer, MP4Player的适配类。这样在AudioPlayer中只需要调用适配类来完成功能,同代理类的区别在于,AudioPlayer新增了适配的功能,代理类不能改变所代理类的功能。

适配器的核心在于将两个不相关的类整合到一起去。实现某一个类的功能的叠加。

 

就是说AudioPlayer要具有AdvancedMediaPlayer的功能。那就要创建一个AdvancedMediaPlayer的适配类。

 

装饰器模式  扩展了被装饰类的功能。装饰器跟代理类有点类似,但是传递的参数不太一样,装饰器传递的是被装饰的类,代理类则要隐藏被代理的类,传递的参数是被代理的类需要的参数。

 

 

 

 

关于工厂模式:静态工厂方法,享元模式(相当于单例模式)

package pattern.factory;public class FoodFactory {        // 方式一    public static Food getFood(String type) throws InstantiationException,            IllegalAccessException, ClassNotFoundException {        if (type.equalsIgnoreCase("mcchicken")) {            return McChicken.class.newInstance();        } else if (type.equalsIgnoreCase("chips")) {            return Chips.class.newInstance();        } else {            System.out.println("哎呀,找不到相应的实例化类啦");            return null;        }    }    // 方式二    public static Food getInstance(String name) throws InstantiationException,            IllegalAccessException, ClassNotFoundException {        return (Food) Class.forName(name).newInstance();    }        // 方式三    public Food getFoodInstance(String type) {        if (type == null) {            return null;        }        if (type.equalsIgnoreCase("mcchicken")) {            return new McChicken();        } else if (type.equalsIgnoreCase("chips")) {            return new Chips();        }        return null;    }}

 

 

享元模式:

public class ShapeFactory {    private static final HashMap
circleMap = new HashMap
(); public static Shape getCircle(String color) { Circle circle = (Circle) circleMap.get(color); if (circle == null) { circle = new Circle(color); circleMap.put(color, circle); System.out.println("Creating circle of color:" + color); } return circle; }}

区别在于:

工厂模式创建了不同的对象,但是享元模式根据不同的参数,公用同一个对象。

 

 

策略模式是对接口的简单应用,模板模式是对抽象类的应用。

组合模式及责任链都是对自身的引用。

 

转载地址:http://dwssl.baihongyu.com/

你可能感兴趣的文章
2019年的财富管理行业将何去何从?
查看>>
J - 最强王者 POJ - 1753 Flip Game 搜索+状态压缩
查看>>
这是一个SSL证书普及的时代
查看>>
C++动态库初探
查看>>
keepalived的搭建
查看>>
URAL 1913 Titan Ruins: Old Generators Are Fine Too
查看>>
Horizon Workspace 快速部署指南三(配置Workspace数据模块)
查看>>
C# 添加Excel水印
查看>>
我的友情链接
查看>>
mysql导出和导入
查看>>
IT软件创业之 -- 电脑设备买过来都是钱,卖出去都是废铁
查看>>
debian的“chkconfig”和“service”
查看>>
敏捷开发
查看>>
"无法启动应用程序,工作组信息文件丢失,或是已被其他用户已独占方式打开"解决办法...
查看>>
MYSQL远程连接授权
查看>>
安装hadoop图文
查看>>
Nginx的连接处理方法
查看>>
22个开源的PHP框架
查看>>
进桌面点右键就提示内存不能读,再点确定后就自动注销。
查看>>
New Features in Xcode 6
查看>>