zoukankan      html  css  js  c++  java
  • 温习设计模式

    以前也看过一次设计模式,但是除了工厂方法和单例,其他都没怎么用。这才决定重温下,一天看一个设计模式。感觉UML的继承关系不重要,关键是什么情况下,应该用什么模式。至于继承关系忘记了,可以查书再看。

    抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。这里的例子是动物世界。非洲动物、美洲动物、亚洲动物

    每个洲的动物又都有食肉动物、食草动物。但具体的食肉动物和食草动物是不一样的。这时候可以使用抽象工厂。new一个动物世界类,传入泛型的子类。然后调用动物世界类对应的子类,这时当情况发生变化后只要修改对应的泛型参数即可。或者本来就有对应的下拉选择。这里要注意的是抽象工厂是有对应的产品族的。一般情况下用工厂就可以了。

    抽象工厂模式与生成器相似,因为它也可以创建复杂对象。主要的区别是生成器模式着重于一步步构造一个复杂对象。而抽象工厂模式着重于多个系列的产品对象(简单的或是复杂的)。生成器在最后的一步返回产品,而对于抽象工厂来说,产品是立即返回的。这里可以举这样一个例子,不同的人都由头、身体、手、脚组成。但每个人的原地摸高都是不同的。而原地摸高其实在构造每个人的个体时已经产生了。这时我们可以用生成器模式。

    工厂方法的话就是没有产品族了,就比如现在有同样的insert和delete方法,但一个是Oracle一个是sql的,这时可以用工厂方法实现。这也就能解释为什么实际中工作中基本都是工厂方法,很少用到抽象工厂和生成器了。

    原型模式就是克隆,C#本身已经实现了,不用考虑。

    单例就是如果实例没有则创建,否则直接返回。始终保证实例只有一个。

  • 相关阅读:
    FND_CONCURRENT.SET_COMPLETION_STATUS(服务器端函数)
    Oracle 11i与12R在功能上有什么区别
    查看oracle数据库最近执行了哪些sql语句
    How to Change the First Accounting Open Period
    AR Adjustment
    Oracle 临时表
    (转)不用安装oracle客户端,PL/SQL也能远程访问数据库
    ERP 是否支持同个账户,同一时间,只能有一个连接?
    多组织访问控制(MOAC)
    【精华ASP代码收集】
  • 原文地址:https://www.cnblogs.com/zyizyizyi/p/2932775.html
Copyright © 2011-2022 走看看