
designPattern&OO
lihfqq
这个作者很懒,什么都没留下…
展开
-
策略模式
针对接口编程,真正的意思是“针对超类编程”(接口通常是一个抽象类或者是一个接口)。 例子:针对现实编程:Dog dog=new Dog();dog.bark();针对接口/超类编程Animal animal=new Dog();animal.bark();更棒的是,子类实例化的动作不再需要在代码中硬编码。Animal animal=getAnimal();...原创 2014-10-11 00:56:58 · 82 阅读 · 0 评论 -
复合模式
复合模式:结合两个或以上的模式,组成一个解决方案,解决一再发生的一般性问题。 男人、机器人、狗。人都可以说话,狗不会说话。通过适配器模式,让狗也可以说话。通过装饰者模式,统计说话次数。通过工厂模式,来创建人。通过组合模式,管理一群人。 通过观察者模式,观察机器人说话。 package com.ez.biz;import com.ez.Abs...原创 2014-10-31 14:27:45 · 152 阅读 · 0 评论 -
代理模式
饮料售卖机,需要有人监视它,如果饮料卖完了,需要往里面放饮料。对饮料售卖机进行监视,通过把饮料售卖机对象传到监视器对象中以获取饮料售卖机的库存量以及当前状态。 饮料售卖机上进行监视,还是需要有人跑到售卖机前(很不方便)。如果要远程监视饮料售卖机,我们可以通过饮料售卖机的代理,无需修改我们的代码。代理假装它是真正的对象,但是其实一切的动作是它利用网络和真正的对象沟通。 ...原创 2014-10-30 18:18:01 · 101 阅读 · 0 评论 -
状态模式
自动售饮料机状态:售空、有钱、没钱、出售中。通过创建一个实例变量来持有状态值,并在方法内书写条件代码来处理不同状态。我们需要处理所有发生的动作(状态的转换),动作包括:投钱、退钱、按出货按钮、出货。 package com.ez.other;/** * 通过一个实例变量来持有状态值,在方法内书写条件代码来处理不同状态。 * @author 窗外赏雪(EZ编程...原创 2014-10-29 19:03:07 · 100 阅读 · 0 评论 -
组合模式
考勤系统有个子系统,叫加班子考勤系统。我们不仅要支持多个系统,甚至还要支持子系统。我们不能把加班考勤子系统加入到系统数组,因为类型不一样。 使用组合模式就可以解决这个问题 组合模式:允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。 提供一个接口,让个别对象和对象组合共同使用,能够用统一的做法来处理个别对象...原创 2014-10-28 19:03:49 · 97 阅读 · 0 评论 -
迭代器模式
迭代器模式:提供一种方法顺序访问一个聚合对象(array、list等)中的各个元素,而又不暴露其内部的表示。一旦实现迭代器,我们只需要一个循环,就可以多态地处理任何项的集合。 有两个系统:绩效查询系统,工资单查询系统。绩效查询系统(PerformanceSystem),拥有公司所有的员工信息,使用数组实现。工资查询系统(SalarySystem),拥有公司所有的员工信息,使...原创 2014-10-27 17:42:58 · 96 阅读 · 0 评论 -
模板方法模式
模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 这个模式是用来创建一个算法的模板。模板就是一个方法,具体的说,这个方法将算法定义成一组步骤,其中的任何步骤都可以是抽象的,由子类负责实现。这可以确保算法的结构保持不变,同时由子类提供部分实现。 例子:系统登录(普通账号,管理...原创 2014-10-24 13:46:24 · 64 阅读 · 0 评论 -
外观模式
用户离职场景1、交接任务(TaskCenter)2、归还电脑(AssetCenter)3、回收权限(PermissionCenter)4、回收账号(AccountCenter)5、清算工资(FinanceCenter) 我们把离职任务写成类和方法的调用。taskCenter.transitionTask();assetCenter.recycleAsset()...原创 2014-10-23 23:38:29 · 190 阅读 · 0 评论 -
适配器模式
适配器模式:将一个类的接口,转换为客户期望的另一个接口。让原本接口不兼容的类可以合作无间。可以通过创建适配器进行接口转换,让不兼容的接口变成兼容的。调用适配器方法,适配器使用被适配者,把调用转换成被适配者的一个或多个调用接口。适配器组合被适配者,实现目标接口。 老气象站的天气预报接口:getWendu();新气象站的天气预报接口:getTemperature(); ...原创 2014-10-23 15:30:33 · 88 阅读 · 0 评论 -
命令模式
命令模式将发出命令的对象和执行命令的对象解耦。发出命令的对象是遥控器(调用者),执行命令的对象是电视(接收者)。 如何将调用者和接收者解耦:利用命令对象,把命令(例如打开电视机)封装成一个命令对象。让遥控器按钮存储一个命令对象,那么当按钮被按下的时候,就可以使用命令对象做相关的工作。遥控器并不需要知道工作内容是什么,只要有一个命令对象和遥控器沟通,把电视打开就可以了。 ...原创 2014-10-22 23:16:44 · 98 阅读 · 0 评论 -
单件模式
单件模式:确保一个类只有一个实例,并提供一个全局访问点。package com.ez.biz;/** * 单件模式, * @author 窗外赏雪(EZ编程网) */public class Singleton { //利用一个私有静态变量记录类的唯一实例 private static Singleton uniqueInstance; //私有构造方...原创 2014-10-21 14:53:42 · 116 阅读 · 0 评论 -
工厂模式
当我们获取数据库连接(mysql,oracle,db2)的时候,一般会用到这样的代码:DbConnection getConnection(String type){ DbConnection dc; if(type.equals("mysql")){ dc=new MySqlConnection(); }else if(type.equals("oracle")){...原创 2014-10-20 16:31:07 · 95 阅读 · 0 评论 -
装饰者模式
使用对象组合的方式(被装饰者组合到装饰者里面),做到在运行时装饰类。 去数码城配电脑,除了买电脑,还需要配置很多配件。Computer是一个抽象类,cost()方法是抽象的(因为每个电脑的价格都不一样),子类必须定义自己的实现。个人电脑:Thinkpad,Acer, Sony等电脑配件,如:MemoryBank,CD,Audio。根据所加的配件不同,最后买单的价格也不同。...原创 2014-10-17 16:56:56 · 79 阅读 · 0 评论 -
观察者模式
我们要开发一个内容发布系统,当运营商有内容发布的时候,通知所有用户新发布的内容。 先看一个错误的示范:当移动运营商发布新的活动,就通知所有订阅的用户。public void publishContent(String message){//主题获取新发布的内容,然后通知所有用户新发布的内容。userA.sendMessage(message);userB.sendM...原创 2014-10-16 23:25:09 · 65 阅读 · 0 评论 -
抽象类 接口 继承
Java中所有的类都是Object的子类。 子类继承超类中所有可以被子类访问的成员(变量和方法)。子类不能继承超类的构造方法。子类除了可以继承超类中的变量及方法,还可以增加自己的成员。当一个超类成员不适合该子类时,子类会以恰当的方式重新定义它,就是隐藏超类的成员。 子类不能继承超类的构造方法,但在子类构造方法中可以使用super(参数列表)调用超类的构造方法。如果子...原创 2014-10-15 23:41:37 · 122 阅读 · 0 评论 -
类的封装(访问修饰符)
封装:类的设计者把类设计成一个黑盒子,使用者只能看见类中定义的公共方法,而看不见方法的实现细节,也不能直接对类中的数据进行操作。 根据封装的原则,使用者可以访问类中的部分方法,但不能直接访问成员变量。Java通过设置访问权限来实现类的封装。 访问修饰符允许的访问级别 如下图所示: 设置类的访问权限在声明一个类时,可以不用权限修饰符,也可以用public设置类为...原创 2014-10-15 11:25:40 · 341 阅读 · 0 评论 -
原型模式
使用原型模式来复制一个对象,从而克隆出多个与原型对象一模一样的对象。在某些系统中,有些对象的创建过程很昂贵很复杂,而且有时候需要频繁创建。可以用原型模式解决。 原型模式(Prototype Pattern):原型模式是一种对象创建型模式,用原型实例,指定创建对象的种类,并且通过复制这些原型,创建新的对象。 在原型模式结构中定义了一个抽象原型类,所有的Java类都继承自j...原创 2014-11-03 17:21:04 · 79 阅读 · 0 评论