当前位置:  编程技术>软件工程/软件设计
本页文章导读:
    ▪工厂设计模式(Factory Pattern)             提供了比工厂模式更高一级的接口级,用于返回若个工厂之一。这个模式是属于创建模式之一。有几点值得注意:   对象的创建充分重用重要的代码。 .........
    ▪Java23种设计模式       基本模式 综述 设计模式分为三种类型,共23类。 创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。简单工厂 结构型模式:适配器模式、桥接模式、装饰模式、组.........
    ▪来自官方的 windows 7 快捷键大全      1. 轻松访问键盘快捷方式 ↖ 下表包含了可以有助于使计算机更易于使用的键盘快捷方式。 按键 功能 按住右 Shift 八秒钟 启用和关闭筛选键 按左 Alt+左 Shift+PrtScn(或 PrtScn) 启用或关.........

[1]工厂设计模式(Factory Pattern)
    来源: 互联网  发布时间: 2013-11-19

       提供了比工厂模式更高一级的接口级,用于返回若个工厂之一。这个模式是属于创建模式之一。有几点值得注意: 

  •  对象的创建充分重用重要的代码。
  •  对象的创建需要访问某个信息或者资源时,这对象不应该包含在组合类中。
  •  一般对象生命周期管理必须集中化,确保应用程序中行为的一致性。
  •        分析一个例子,如下:
         定义一个枚举类型的CarType类,列出车的类型。
    public enum CarType {
        SMALL, SEDAN, LUXURY
    }
    

         抽象Car类,所有的子类扩展Car这个类实现自己的特有功能。
    public abstract class Car {
    
        private CarType model = null;
    
        public Car(CarType model) {
            this.model = model;
            arrangeParts();
        }
    
        private void arrangeParts() {
            // Do one time processing here
        }
    
        // Do subclass level processing in this method
        protected abstract void construct();
    
    
        public CarType getModel() {
            return model;
        }
    
        public void setModel(CarType model) {
            this.model = model;
        }
    }
    

          分别定义SmallCar、Sedan和Luxury类。
    public class SmallCar extends Car{
    
        SmallCar() {
            super(CarType.SMALL);
            construct();
        }
    
        @Override
        protected void construct() {
            System.out.println("Building small car");
            // add accessories
        }
    }
    

     
          
    public class SedanCar extends Car {
        SedanCar() {
            super(CarType.SEDAN);
            construct();
        }
    
        @Override
        protected void construct() {
            System.out.println("Building sedan car");
            // add accessories
        }
    }
    

          
    public class LuxuryCar extends Car {
        LuxuryCar() {
            super(CarType.LUXURY);
            construct();
        }
    
        @Override
        protected void construct() {
            System.out.println("Building luxury car");
            // add accessories
        }
    }
    
           定义FactoryCar工厂类,现实具体的调用。
    public class CarFactory {
        public static Car buildCar(CarType model) {
            Car car = null;
            switch (model) {
                case SMALL:
                    car = new SmallCar();
                    break;
    
                case SEDAN:
                    car = new SedanCar();
                    break;
    
                case LUXURY:
                    car = new LuxuryCar();
                    break;
    
                default:
                    // throw some exception
                    break;
            }
            return car;
        }
    }
    

          测试工厂类,单元测试如下:
    public class CarFactoryTest {
    
        @SuppressWarnings("deprecation")
        @Test
        public void testCarFactory() {
            Assert.assertEquals(true, CarFactory.buildCar(CarType.SMALL) instanceof Car) ;
            Assert.assertEquals(true, CarFactory.buildCar(CarType.SEDAN) instanceof Car) ;
            Assert.assertEquals(true, CarFactory.buildCar(CarType.LUXURY) instanceof Car) ;
        }
    }

          输出结果如下:
          
    Building small car
    Building sedan car
    Building luxury car

         工厂模式的使用场合:
        1.创建相关的家族或是依赖对象,比如Kit.
        2. 提供一个产品类库,显露接口,但是不包括实现。
        3. 修要从超类哪里隔离具体的实现类.
        4. 系统需要独立出系统的产品如何创建、组合和呈现。
         如果你想做一深入的研究,可以查阅Java API代码.
    • java.sql.DriverManager#getConnection()
    • java.net.URL#openConnection()
    • java.lang.Class#newInstance()
    • java.lang.Class#forName()
        

    作者:GreatElite 发表于2013-5-13 11:30:08 原文链接
    阅读:81 评论:0 查看评论

        
    [2]Java23种设计模式
        来源: 互联网  发布时间: 2013-11-19

    基本模式

    综述

    设计模式分为三种类型,共23类。

    创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。简单工厂

    结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。

    行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。

    按alphabeta排列简介如下。

    Abstract Factory(抽象工厂模式):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

    Adapter(适配器模式):将一个类的接口转换成客户希望的另外一个接口。A d a p t e r模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

    Bridge(桥接模式):将抽象部分与它的实现部分分离,使它们都可以独立地变化。

    Builder(建造者模式):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

    Chain of Responsibility(职责链模式):为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。

    Command(命令模式):将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。

    Composite(组合模式):将对象组合成树形结构以表示“部分-整体”的层次结构。它使得客户对单个对象和复合对象的使用具有一致性。

    Decorator(装饰模式):动态地给一个对象添加一些额外的职责。就扩展功能而言, 它比生成子类方式更为灵活。

    Facade(外观模式):为子系统中的一组接口提供一个一致的界面, F a c a d e模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

    Factory Method(工厂模式):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。Factory Method使一个类的实例化延迟到其子类。

    Flyweight(享元模式):运用共享技术有效地支持大量细粒度的对象。

    Interpreter(解析器模式):给定一个语言, 定义它的文法的一种表示,并定义一个解释器, 该解释器使用该表示来解释语言中的句子。

    Iterator(迭代器模式):提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。

    Mediator(中介模式):用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

    Memento(备忘录模式):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到保存的状态。

    Observer(观察者模式):定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。

    Prototype(原型模式):用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。

    Proxy(代理模式):为其他对象提供一个代理以控制对这个对象的访问[1]。

    Singleton(单例模式):保证一个类仅有一个实例,并提供一个访问它的全局访问点。 单例模式是最简单的设计模式之一,但是对于Java的开发者来说,它却有很多缺陷。在本月的专栏中,David Geary探讨了单例模式以及在面对多线程(multithreading)、类装载器(classloaders)和序列化(serialization)时如何处理这些缺陷。[2]

    State(状态模式):允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。

    Strategy(策略模式):定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。

    Template Method(模板方法模式):定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

    Visitor(访问者模式):表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。

    详细描述

    从下一节开始,详细描述以下每一种设计模式。

    Factory Method

    结构

    意图 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。

    适用性 当一个类不知道它所必须创建的对象的类的时候。

    当一个类希望由它的子类来指定它所创建的对象的时候。

    当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。

    Abstract Factory

    结构

    意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

    适用性 一个系统要独立于它的产品的创建、组合和表示时。

    一个系统要由多个产品系列中的一个来配置时。

    当你要强调一系列相关的产品对象的设计以便进行联合使用时。

    当你提供一个产品类库,而只想显示它们的接口而不是实现时。

    Builder

    结构

    意图 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

    适用性 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。

    当构造过程必须允许被构造的对象有不同的表示时。

    Prototype

    结构

    意图 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

    适用性 当要实例化的类是在运行时刻指定时,例如,通过动态装

        
    [3]来自官方的 windows 7 快捷键大全
        来源: 互联网  发布时间: 2013-11-19
    1. 轻松访问键盘快捷方式 ↖

    下表包含了可以有助于使计算机更易于使用的键盘快捷方式。
    按键 功能
    按住右 Shift 八秒钟 启用和关闭筛选键
    按左 Alt+左 Shift+PrtScn(或 PrtScn) 启用或关闭高对比度
    按左 Alt+左 Shift+Num Lock 启用或关闭鼠标键
    按 Shift 五次 启用或关闭粘滞键
    按住 Num Lock 五秒钟 启用或关闭切换键
    Windows 徽标键 + U 打开轻松访问中心

    2. 常规键盘快捷方式 ↖

    下表包含了常规键盘快捷方式。
    按键 功能
    F1 显示帮助
    Ctrl+C 复制选择的项目
    Ctrl+X 剪切选择的项目
    Ctrl+V 粘贴选择的项目
    Ctrl+Z 撤消操作
    Ctrl+Y 重新执行某项操作
    Delete 删除所选项目并将其移动到“回收站”
    Shift+Delete 不先将所选项目移动到“回收站”而直接将其删除
    F2 重命名选定项目
    Ctrl+向右键 将光标移动到下一个字词的起始处
    Ctrl+向左键 将光标移动到上一个字词的起始处
    Ctrl+向下键 将光标移动到下一个段落的起始处
    Ctrl+向上键 将光标移动到上一个段落的起始处
    Ctrl+Shift 加某个箭头键 选择一块文本
    Shift 加任意箭头键 在窗口中或桌面上选择多个项目,或者在文档中选择文本
    Ctrl 加任意箭头键+空格键 选择窗口中或桌面上的多个单个项目
    Ctrl+A 选择文档或窗口中的所有项目
    F3 搜索文件或文件夹
    Alt+Enter 显示所选项的属性
    Alt+F4 关闭活动项目或者退出活动程序
    Alt+空格键 为活动窗口打开快捷方式菜单
    Ctrl+F4 关闭活动文档(在允许同时打开多个文档的程序中)
    Alt+Tab 在打开的项目之间切换
    Ctrl+Alt+Tab 使用箭头键在打开的项目之间切换
    Ctrl+鼠标滚轮 更改桌面上的图标大小
    Windows 徽标键 + Tab 使用 Aero Flip 3-D 循环切换任务栏上的程序
    Ctrl + Windows 徽标键 + Tab 通过 Aero Flip 3-D 使用箭头键循环切换任务栏上的程序
    Alt+Esc 以项目打开的顺序循环切换项目
    F6 在窗口中或桌面上循环切换屏幕元素
    F4 在 Windows 资源管理器中显示地址栏列表
    Shift+F10 显示选定项目的快捷菜单
    Ctrl+Esc 打开「开始」菜单
    Alt+加下划线的字母 显示相应的菜单
    Alt+加下划线的字母 执行菜单命令(或其他有下划线的命令)
    F10 激活活动程序中的菜单栏
    向右键 打开右侧的下一个菜单或者打开子菜单
    向左键 打开左侧的下一个菜单或者关闭子菜单
    F5 刷新活动窗口
    Alt+向上键 在 Windows 资源管理器中查看上一级文件夹
    Esc 取消当前任务
    Ctrl+Shift+Esc 打开任务管理器
    插入 CD 时按住 Shift 阻止 CD 自动播放

    3. 对话框键盘快捷方式 ↖

    下表包含了在对话框中使用的键盘快捷方式。
    按键 功能
    Ctrl+Tab 在选项卡上向前移动
    Ctrl+Shift+Tab 在选项卡上向后移动
    Tab 在选项上向前移动
    Shift+Tab 在选项上向后移动
    Alt+加下划线的字母 执行与该字母匹配的命令(或选择选项)
    Enter 对于许多选定命令代替单击鼠标
    空格键 如果活动选项是复选框,则选中或清除该复选框
    箭头键 如果活动选项是一组选项按钮,则选择某个按钮
    F1 显示帮助
    F4 显示活动列表中的项目
    Backspace 如果在“另存为”或“打开”对话框中选中了某个文件夹,则打开上一级文件夹

    4. Windows 徽标键相关的快捷键 ↖

    Windows徽标键就是显示为Windows旗帜,或标有文字Win或Windows的按键,以下简称Win键。XP时代有4个经典的 Win 键组合:R/E/F/L。到了 Win7,花样更多了。
    Win:打开或关闭开始菜单。
    Win + Pause:显示系统属性对话框。
    Win + D:显示桌面。
    Win + M:最小化所有窗口。
    Win + SHIFT + M:还原最小化窗口到桌面上。
    Win + E:打开我的电脑
    Win + F:搜索文件或文件夹。
    Ctrl + Win + F:搜索计算机(如果您在网络上) 。
    Win + L:锁定您的计算机或切换用户。
    Win + R:打开运行对话框。
    Win + T:切换任务栏上的程序(感觉是和alt+ESC 一样 )
    Win + 数字:让位于任务栏指定位置(按下的数字作为序号)的程序,新开一个实例。(感觉这个比较新颖,貌似快速启动。) Shift + Windows logo key +number:Start a new instance of the program pinned to the taskbar in the position indicated by the number.
    Ctrl + Win + 数字:让位于任务栏指定位置(按下的数字作为序号)的程序,切换到上一次的活动窗口。 Ctrl+Windows logo key +number:Switch to the last active window of the program pinned to the taskbar in the position indicated by the number.
    ALT + Win + 数字:让位于任务栏指定位置(按下的数字作为序号)的程序,显示跳转清单。 Alt+Windows logo key +number: Open the Jump List for the program pinned to the taskbar in the position indicated by the number.
    Win + TAB:循环切换任务栏上的程序并使用的Aero三维效果。
    Ctrl + Win + TAB:使用方向键来循环循环切换任务栏上的程序,并使用的Aero三维效果。
    按Ctrl + Win + B:切换到在通知区域中显示信息的程序
    Win + 空格:预览桌面。
    Win + ↑:最大化窗口。
    Win + ↓:最小化窗口。
    Win + ←:最大化到窗口左侧的屏幕上。
    Win + →:最大化窗口到右侧的屏幕上。
    Win + Home:最小化所有窗口,除了当前激活窗口。
    Win+ SHIFT + ↑:拉伸窗口的到屏幕的顶部和底部。
    Win+ SHIFT + →/←:移动一个窗口,从一个显示器到另一个。
    Win + P:选择一个演示文稿显示模式。
    Win + G:循环切换侧边栏的小工具。
    Win + U:打开轻松访问中心。
    Win + x:打开Windows移动中心。

    5. Windows Explorer相关快捷键 ↖

    Ctrl+N 打开新窗口
    Ctrl+Shift+N 新建文件夹
    End 显示活动窗口的底部
    Home 显示活动窗口的顶部
    F11 最大化或最小化活动窗口
    Num Lock+小键盘星号(*) 显示选中文件夹的所有子文件夹
    Num Lock+小键盘加号(+) 显示选中文件夹的内容
    Num Lock+小键盘减号(-) 折叠选中文件夹
    左方向键 折叠当前展开的选中文件夹或选中上层文件夹
    Alt+Enter 打开选中项目的属性对话框
    Alt+P 显示预览窗格
    Alt+左方向键 切换到前一次打开的文件夹
    右方向键 显示(展开)当前选中项目或选中第一个子文件夹
    Alt+右方向键 切换到下一次后打开的文件夹
    Alt+上方向键 打开上层文件夹
    Ctrl+鼠标滚轮 改变文件和文件夹图标的大小和外观
    Alt+D 选中地址栏(定位到地址栏)
    Ctrl+E 选中搜索框(定位到搜索框)

    6. 放大镜键盘快捷方式 ↖

    下表包含了使用放大镜的键盘快捷方式。
    按键 功能
    Windows 徽标键 + 加号或减号 放大或缩小
    Ctrl+Alt+空格键 显示鼠标指针
    Ctrl+Alt+F 切换到全屏模式
    Ctrl+Alt+L 切换到镜头模式
    Ctrl+Alt+D 切换到停靠模式
    Ctrl+Alt+I 反色
    Ctrl+Alt+箭头键 按箭头键的方向平移
    Ctrl+Alt+R 调整镜头的大小
    Windows 徽标键 + Esc 退出放大镜

    7. 远程桌面相关快捷键 ↖

    Alt+Page Up 按从左向右顺序切换程序
    Alt+Page Down 按从右向左切换程序
    Alt+Insert 按程序打开先后顺序循环切换程序
    Alt+Home 显示“开始”菜单
    Ctrl+Alt+Break 在窗口模式和全屏之间切换
    Ctrl+Alt+End 显示Windows安全性对话框
    Alt+Delete 显示当前窗口的系统菜单
    Ctrl+Alt+-(小键盘减号) 当前活动窗口截图
    Ctrl+Alt++(小键盘加号) 全屏截图
    Ctrl+Alt+向右键 从远程桌面控件“跳转”到主机程序中的控件(如按钮或文本框)。将远程桌面控件嵌入到其他(主机)程序后,此功能非常有用。
    Ctrl+Alt+向左键 从远程桌面控件“跳转”到主机程序中的控件(如按钮或文本框)。将远程桌面控件嵌入到其他(主机)程序后,此功能非常有用。

    8. 画图键盘快捷方式 ↖

    下表包含了使用画图的键盘快捷方式。
    按键 功能
    Ctrl+N 创建新的图片
    Ctrl+O 打开现有图片
    Ctrl+S 将更改保存到图片
    F12 将此图片另存为新文件
    Ctrl+P 打

        
    最新技术文章:
    ▪主-主数据库系统架构    ▪java.lang.UnsupportedClassVersionError: Bad version number i...    ▪eclipse项目出现红色叉叉解决方案
    ▪Play!framework 项目部署到Tomcat    ▪dedecms如何做中英文网站?    ▪Spring Batch Framework– introduction chapter(上)
    ▪第三章 AOP 基于@AspectJ的AOP    ▪基于插件的服务集成方式    ▪Online Coding开发模式 (通过在线配置实现一个表...
    ▪观察者模式(Observer)    ▪工厂模式 - 程序实现(java)    ▪几种web并行化编程实现
    ▪机器学习理论与实战(二)决策树    ▪Hibernate(四)——全面解析一对多关联映射    ▪我所理解的设计模式(C++实现)——解释器模...
    ▪利用规则引擎打造轻量级的面向服务编程模式...    ▪google blink的设计计划: Out-of-Progress iframes    ▪FS SIP呼叫的消息线程和状态机线程
    ▪XML FREESWITCH APPLICATION 实现    ▪Drupal 实战    ▪Blink: Chromium的新渲染引擎
    ▪(十四)桥接模式详解(都市异能版)    ▪你不知道的Eclipse用法:使用Allocation tracker跟...    ▪Linux内核-进程
    ▪你不知道的Eclipse用法:使用Metrics 测量复杂度    ▪IT行业为什么没有进度    ▪Exchange Server 2010/2013三种不同的故障转移
    ▪第二章 IoC Spring自动扫描和管理Bean    ▪CMMI简介    ▪目标检测(Object Detection)原理与实现(六)
    ▪值班总结(1)——探讨sql语句的执行机制    ▪第二章 IoC Annotation注入    ▪CentOS 6.4下安装Vagrant
    ▪Java NIO框架Netty1简单发送接受    ▪漫画研发之八:会吃的孩子有奶吃    ▪比较ASP和ASP.NET
    ▪SPRING中的CONTEXTLOADERLISTENER    ▪在Nginx下对网站进行密码保护    ▪Hibernate从入门到精通(五)一对一单向关联映...
    ▪.NET领域驱动设计—初尝(三:穿过迷雾走向光...    ▪linux下的块设备驱动(一)    ▪Modem项目工作总结
    ▪工作流--JBPM简介及开发环境搭建    ▪工作流--JBPM核心服务及表结构    ▪Eclipse:使用JDepend 进行依赖项检查
    ▪windows下用putty上传文件到远程Linux方法    ▪iBatis和Hibernate的5点区别    ▪基于学习的Indexing算法
    ▪设计模式11---设计模式之中介者模式(Mediator...    ▪带你走进EJB--JMS编程模型    ▪从抽象谈起(二):观察者模式与回调
    ▪设计模式09---设计模式之生成器模式(Builder)也...    ▪svn_resin_持续优化中    ▪Bitmap recycle方法与制作Bitmap的内存缓存
    ▪Hibernate从入门到精通(四)基本映射    ▪设计模式10---设计模式之原型模式(Prototype)    ▪Dreamer 3.0 支持json、xml、文件上传
    ▪Eclipse:使用PMD预先检测错误    ▪Jspx.net Framework 5.1 发布    ▪从抽象谈起(一):工厂模式与策略模式
    ▪Eclipse:使用CheckStyle实施编码标准    ▪【论文阅读】《Chain Replication for Supporting High T...    ▪Struts2 Path_路径问题
    ▪spring 配置文件详解    ▪Struts2第一个工程helloStruts极其基本配置    ▪Python学习入门基础教程(learning Python)--2 Python简...
    ▪maven springmvc环境配置    ▪基于SCRUM的金融软件开发项目    ▪software quality assurance 常见问题收录
    ▪Redis集群明细文档    ▪Dreamer 框架 比Struts2 更加灵活    ▪Maven POM入门
    ▪git 分支篇-----不断更新中    ▪Oracle非主键自增长    ▪php设计模式——UML类图
    ▪Matlab,Visio等生成的图片的字体嵌入问题解决...    ▪用Darwin和live555实现的直播框架    ▪学习ORM框架—hibernate(二):由hibernate接口谈...
    ▪(十)装饰器模式详解(与IO不解的情缘)    ▪无锁编程:最简单例子    ▪【虚拟化实战】网络设计之四Teaming
    ▪OSGi:生命周期层    ▪Javascript/Jquery——简单定时器    ▪java代码 发送GET、POST请求
    ▪Entity Framework底层操作封装(3)    ▪HttpClient 发送GET、POST请求    ▪使用spring框架,应用启动时,加载数据
    ▪Linux下Apache网站目录读写权限的设置    ▪单键模式的C++描述    ▪学习ORM框架—hibernate(一):初识hibernate
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3