策略模式、简单工厂结合
需求:使用加密狗進(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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode:Add Two Num
- 下一篇: 51. 顺时针打印矩阵[print ma