常用GoF设计模式--1.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
常用GoF设计模式--1

常用GoF设计模式--1 为了实现分离,一般需要从“纵向”、“横向”、“核心和外围”三个不同的方面进行仔细地地分析和考虑。 对于纵向进行分离,常用的处理方法是“分层策略”,或者某些框架技术。 对于同一层中各个组件类之间的横向关联关系的分离,常用的处理方法是使用“桥模式”。 对于核心功能模块和将要扩展的外围模块之间的分离,常用的处理方法是使用“装饰器模式”。 1. 基本概念 1.1 GoF设计模式展示的设计原则 GoF设计模式展示了如何处理各种变化,使代码获得最大的可重用性。主要体现以下3种设计策略。 针对接口编程,而不是针对具体的实现类编程。 优先使用对象组合,而不是类的继承技术。 将系统中的“可变部分”和“不可变部分”分离,封装变化点。 1.2 GoF设计模式分为几大泛型 1.2.1 创建型模式 创建型模式涉及对象实例化时使用的各种模式,有以下几种: (1)工厂方法(Factory Method) (2)抽象工厂(Abstract Factory) (3)原型(Prototyoe) (4)生成器(Builder) (5)单例(Singleton) 1.2.2 结构型模式 结构型模型主要描述系统中的类和对象应该怎样结合以构成更大的结构,有以下几种: (1)门面(Facade) (2)代理(Proxy) (3)适配器(Adapter) (4)组合(Composite) (5)装饰(Decorator) (6)桥(Bridge) (7)享元(Flyweight) 1.2.3 行为型模式 行为型模式主要用来封装变化,有以下几种: (1)模版(Template) (2)备忘录(Memento) (3)观察者(Observer) (4)解释器(Interpreter) (5)职责链(Chain of Responsibility) (6)命令(Command) (7)迭代器(Iterator) (8)中介(Mediator) (9)访问者(Visitor) (10)状态(State) (11)策略(Strategy) 2. 几个常用模式 2.1 单例模式 Singleton类定义了一个getInstance()操作,允许客户端访问它的唯一实例。getInstance()是一个静态方法,主要负责创建自己的一个唯一实例。代码如下: public class Singleton { private static Singleton instance; private Singleton() //构造方法为“私有”,阻止了外界用new创建本类实例的可能 { } public static synchronized Singleton getInstance() //创建单例 { if(instance == null) { instance = new Singleton(); } return instance; } 其它方法(); } 【例1】 一般对于门面类,需要用单例模式创建它的实例,即在系统中门面类实例只能有一个。对于生成订单的如下类图: 为门面接口和门面类命名后的类图为: 关于门面类“DAOServiceImple”的代码如下: public class DAOServiceImple implements DAOServiceInterface { public UserInfoDAOInterface oneUserInfoDAOImple = null; public GoodsInfoDAOInterface oneGoodsInfoDAOImple = null; private static DAOServiceInterface oneDAOServiceInstance = null; private DAOServiceImple() //构造方法 { } public static synchronized DAOServiceInterface getInstance() //单例方法 { if(oneDAOServiceInstance == null) oneDAOServiceInstance = new DAOServiceImple(); return oneDAOServiceInstance; } public OrderInfoPO produceOneOrderInfo(String registerUserID, String goodsID) //一揽子包干门面方法 { oneUserInfoDAOImple =

文档评论(0)

me54545 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档