zoukankan      html  css  js  c++  java
  • 设计模式

    代理模式 将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<String, Shape> circleMap = new HashMap<String, Shape>();
    
        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;
        }
    }

    区别在于:

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

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

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

  • 相关阅读:
    Delphi 与 C/C++ 数据类型对照表(最新的tokyo)
    Delphi新语法 For ..In
    NSwag生成客户端调用代码
    微服务
    springcloud
    NET高性能IO
    秒杀场景
    CPU开销sql server 性能调优
    WinDbg调试分析 net站点 CPU100%问题
    全链路实践Spring Cloud 微服务架构
  • 原文地址:https://www.cnblogs.com/daishuguang/p/5271744.html
Copyright © 2011-2022 走看看