大话设计模式
ANYOLY
喜欢程序 喜欢开发 做自己最想做的事
展开
-
适配器模式
大话设计模式里适配器模式的定义:将一个类的接口转换成客户希望的另外一个接口。 Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作适配器模式举例 “适配”一词最早出现在电工学中,一般家庭中用的都是220V电压,手机充电时要求5V电压,于是便有了电源适配器。这就是适配器本质所在,目的是使控制范围之外的一个原有对象与某个接口所匹配。适配器模式主要应用于希望复用一些现存的类,但...原创 2018-04-08 23:19:28 · 687 阅读 · 0 评论 -
状态模式
状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化状态模式的结构图如下:State类:抽象状态类,定义一个接口以封装与Context的一个特定状态相关的行为package state; /** * 抽象状态类 * @au...原创 2018-04-09 22:20:19 · 147 阅读 · 0 评论 -
抽象工厂模式
场景问题 假设一个网站的数据来源于数据库SQL Server,当网站进行维护时,增加或删除功能,在数据库做改动,相应的程序代码也必须改动,此时维护的工作量是很大的。再比如遇到要用到Oracle数据库,改动的地方更多。因此应该提供不同的数据库访问接口,通过组装来应对不同的需求变更。用工厂方法模式的数据访问Iuser接口: 用于客户端访问,解除与具体的数据库访问的解耦package fac...原创 2018-04-10 00:33:49 · 129 阅读 · 0 评论 -
组合模式
场景:公司最近接了一个项目,为一家大公司做一个工作管理系统,类似于常见的OA系统,单从需求分析的话,不难开发。但是考虑到大公司希望在所有分公司推广使用,如果采用简单复制同一套代码,效果不如人意,总公司和分公司是成树状结构,也就是有组织结构的,不能是简单的平行管理。有些功能只能总公司使用,而部分功能总公司和分公司可以共同使用,比如人力资源部之类的。这就涉及到整体与部分的关系—整体和部分可以被一致对待...原创 2018-04-22 20:30:14 · 133 阅读 · 0 评论 -
迭代器模式
迭代器模式(Iterator):提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示多个对象聚在一起形成的总体称之为聚集(Aggregate),聚集对象是能够包容一组对象的容器对象。一个聚集对象,不管对象 是什么都需要遍历的时候,考虑使用迭代器模式。迭代器模式(Iterator)结构图Iterator迭代器抽象类package iterator; /** * @author ...原创 2018-04-22 22:02:20 · 826 阅读 · 0 评论 -
备忘录模式
场景:假设在一个游戏中,用户为了进入更高的关卡而挑战boss,结果挑战失败,但用户如果重头再来,必然影响游戏体验,于是便有了“游戏存储进度”。存储进度的功能设计成重新抛出一个挑战boss之前的角色,进度是停留在一定的关卡上的。在“游戏存储进度”功能的实现上是复杂的:要做到不允许别人访问我的代码,只可以拿到数据因此可以将“游戏存储进度”联想成一个备忘录,游戏过程中通过访问“游戏存储进度”(备忘录)来...原创 2018-04-21 22:29:04 · 424 阅读 · 0 评论 -
单例模式
单例模式(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点通常来讲可以让一个全局变量使得一个对象被访问,但是它不能阻止你实例化多个对象,一个最好的方法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法单例模式(Singleton)结构图Singleton类:定义一个GetInstance操作,允许客户访问它的唯一实...原创 2018-05-01 17:34:49 · 141 阅读 · 0 评论