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

    外观模式概念

      外观模式又称为门面模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个搞层次接口,使得这一个子系统更加容易使用。这一模式完美的体现了依赖倒转原则和迪米特法则的思想,所以是非常常用的模式之一。

    外观模式UML图

      

    外观模式代码

      学习外观模式我使用的例子是一个打架的例子,打架一般都不希望被人看见,只要知道打了人了就可以了。

    package com.roc.face;
    /**
     * 门面模式接口    打架不能让别人看见
     * @author liaowp
     *
     */
    public interface FaceInterface {
        /**
         * 跟谁打
         * @param name
         */
        public void fight(String name);
        
        /**
         * 给糖
         * @param num
         */
        public void giveTang(int num);
    }
    package com.roc.face;
    /**
     * 具体实现方式
     * @author liaowp
     *
     */
    public class FaceIml implements FaceInterface{
        /**
         * 打架
         */
        public void fight(String name) {
            System.out.println("打了"+name);
        }
        
        /**
         * 给糖
         * @param num
         */
        public void giveTang(int num){
            System.out.println("不能报复,给你"+num+"块糖");
        }
            
    }
    package com.roc.face;
    /**
     * 对外面的情况
     * @author liaowp
     *
     */
    public class FaceModel {
        private FaceInterface  faceInterface=new FaceIml();
        
        public void deal(String name,int num){
            faceInterface.fight(name);
            faceInterface.giveTang(num);
        }
    }
    package com.roc.face;
    /**
     * 使用场景
     * @author liaowp
     *
     */
    public class Client {
        public static void main(String[] args) {
            FaceModel faceModel=new FaceModel();
            String name="liaowp";
            faceModel.deal(name,1);//并不关心里面怎么打的,只知道要打那个人。这就是门面      假如现在打完之后怕报复,又给了一块糖,只需要修改接口那边就可以了。
        }
    }

    外观模式适用场景

    (1)设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式。
    (2) 开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口。
    (3) 维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一个外观类,以便新系统与其交互。
  • 相关阅读:
    3.怎样将ASP.NET MVC应用程序发布到IIS
    7.ASP.NET MVC 5.0中的Routing【路由】
    2.第一个ASP.NET MVC 5.0应用程序
    5. ASP.NET MVC 中的Areas【区域】是什么
    JVM系列五:JVM监测&工具[整理中]
    C# 编写 windows 服务 采用多线对数据库操作
    安装MVC4的悲惨历程
    Mac上安装FFmpeg命令行
    host asp.net程序的小型IIS
    msdn windows 电驴资源(转)
  • 原文地址:https://www.cnblogs.com/liaoweipeng/p/5774297.html
Copyright © 2011-2022 走看看