日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

策略模式、简单工厂结合

發(fā)布時(shí)間:2024/1/17 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 策略模式、简单工厂结合 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

需求:使用加密狗進(jìn)行軟件保護(hù),可能會(huì)使用不同的加密狗。

分析:加密狗

設(shè)計(jì):使用策略模式,但由于策略模式需要使用人員了解哪個(gè)組件提供了軟件保護(hù)服務(wù),于是結(jié)合工廠模式對(duì)對(duì)象進(jìn)行創(chuàng)建。由于可以使用的加密狗不會(huì)很多,所以采用了簡(jiǎn)單工廠模式。

  這樣,結(jié)構(gòu)大體如下:工廠、功能抽象、功能實(shí)現(xiàn)、功能環(huán)境。

編碼:

功能抽象:

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

功能實(shí)現(xiàn):

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();
  }
}

功能環(huán)境:

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();
  }
}

用戶不能直接通過具體實(shí)現(xiàn)類進(jìn)行調(diào)用,而只能通過環(huán)境類。

.net里沒用包的概念,不能方便實(shí)現(xiàn)訪問限制,沒有只能名稱空間級(jí)的訪問限制,太不方便了,鄙視一下。

轉(zhuǎn)載于:https://www.cnblogs.com/javaleon/p/3740553.html

總結(jié)

以上是生活随笔為你收集整理的策略模式、简单工厂结合的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。