zoukankan      html  css  js  c++  java
  • 程序员的偷懒 设计模式之抽象工厂

    模式这个东西从去看就开始看,先是看设计模式 那叫一个晕。

    后来又有了“大话设计模式"这本书,才有些能够理解了。
    但是理解和应用还是差了很远。
    真正的使用从现在才开始。
    为什么用模式呢,说明白了,就是为了少写代码了。为了软件容易维护。最近刚顿悟了抽像工厂,给大家举个例子,分享一下,嘿嘿。
    抽像工厂在设计模式那本书中说明的好处是 可以使不同的产品族进行互相替换,可是怎么才叫互相替换呢?
    考虑下面的情况。
    老板让你写一个组业务类。
    现在的状况,你只能用.Net Framework 2.0去写。但是你一直在学习3.5,想在日后把这些用3.5重写。
    那么,在现在的情况下。你做如下工作。
    把所有的类(你设计好的)都抽像成对应的接口。
    定义一个工厂的接口,生成这些产品接口的实例。
    用.Net Framewok 2.0去实现一个工厂和相应的类。
    这样,你上层的开发人員在调用你的类库时,只需要实例一个2.0的工厂,再去生成这些实体类就可以了。当然,他看到的只是各种接口。

    以后升级怎么办呢?
    定义一个.Net Framework 3.5的工厂
    定义一组3.5的实体类。
    然后,让你的上层开发人員把那句实例2.0的工厂换成3.5的工厂就oK了。。

    升级成功。。


    但是还有一个不好的地方。。
    就是 你的上层开发人員还 是需要改代码的。他得把2。0的工厂都改成3.5的工厂。 如果他只实例了一个工厂还好,如果是n个,他会很烦的。。。

    那么这种情况下,就考虑使用单例。。
    在你的类库里,设计一个静态方法,返回一个工厂的接口。
    让你的上层开发人員用这个静态方法去实例一个工厂。
    在2.0时代,你用这个方法给他返回一个2.0的工厂。
    升级时呢?返回一个3.5的工厂就oK了。


    这样,你这面做了变化,做了升级,可是你的上层开发人員什么都不用改。
    够酷吧。
    呵呵
    一点小感想,文笔烂,大家不要笑啊。
    欢迎cs||hit们拍砖啊。。。。


    简单的代码

    你的接口。
    namespace yourName{
    interface IProductA{}
    interface IProdoctB{}
    interface IFactory{
    IProductA CreateA();
    IProductB CreateB();
    }
    }
    2.0j时代的代码
    namespace yourName2{
    class ProductA:IProductA{}
    class ProcuceB:IProductB{}
    class Factory:IFacotry{}
    给它一个实例方法
    class Global{
    static IFactory GetInstance(){
    return new yourName2.Factory();
    }
    }

    现在升级到3.5啦。。。
    实例类库
    namespace yourName35{
    class ProductA:IProductA{}
    class ProductB:IProductB{}
    class Facotry:IFactory{}
    }
    改一下Global
    class Global{
    static IFactory GetInstance{
    return new yourName32.Factory();
    }
    }



    你的上层开发人員,永远一个样子。。。
    IFactory factory = Global.GetInstance();
    IProcductA a = factory.CreateA();
    IProcductB b = factory.CreateB();
  • 相关阅读:
    网络安全协议(1)
    CG-CTF(6)
    CG-CTF(5)
    CG-CTF(4)
    CG-CTF(3)
    MAC地址欺骗(原理及实验)
    CG-CTF(2)
    CG-CTF(1)
    【转载】Spring Boot【快速入门】2019.05.19
    【编程大系】Java资源汇总
  • 原文地址:https://www.cnblogs.com/geyunfei/p/1332132.html
Copyright © 2011-2022 走看看