zoukankan      html  css  js  c++  java
  • 策略模式、简单工厂结合

    需求:使用加密狗进行软件保护,可能会使用不同的加密狗。

    分析:加密狗

    设计:使用策略模式,但由于策略模式需要使用人员了解哪个组件提供了软件保护服务,于是结合工厂模式对对象进行创建。由于可以使用的加密狗不会很多,所以采用了简单工厂模式。

      这样,结构大体如下:工厂、功能抽象、功能实现、功能环境。

    编码:

    功能抽象:

    public abstract class AbstractKeyWriter
    {
      internal abstract void write(string key);
    }

    功能实现:

    internal class AWriter:AbstractKeyWriter
    {
      internal override void write(string key)
      {
        throw new NotImplementedException();
      }
    }

    internal class BWriter:AbstractKeyWriter
    {
      internal override void write(string key)
      {
        throw new NotImplementedException();
      }
    }

    功能环境:

    internal class KeyWriterContext
    {
      private AbstractKeyWriter writer;
      public KeyWriterContext() { }
      public KeyWriterContext(AbstractKeyWriter writer)
      {
        this.writer = writer;
      }
      public void setKeyWriter(AbstractKeyWriter writer)
      {
        this.writer = writer;
      }
      public void write(string key)
      {
        this.writer.write(key);
      }
    }

    工厂:

    public class KeyWriterFactory
    {
      public static AbstractKeyWriter getAWriter()
      {
        return new AWriter();
      }


      private static AbstractKeyWriter getBWriter()
      {
        return new BWriter();
      }
    }

    用户不能直接通过具体实现类进行调用,而只能通过环境类。

    .net里没用包的概念,不能方便实现访问限制,没有只能名称空间级的访问限制,太不方便了,鄙视一下。

  • 相关阅读:
    TCP拥塞控制机制
    C/S 与 B/S 区别
    ext4文件系统新特性
    关于TCP慢启动和拥塞避免的题
    [信息图表]移动学习 Go Study
    [时间线]Android市场的发展
    学习,只有勤奋是不够的……
    UNIX域套接字实例
    程序员的本质
    淘宝Web服务器Tengine正式开源
  • 原文地址:https://www.cnblogs.com/javaleon/p/3740553.html
Copyright © 2011-2022 走看看