小编aiq*_*ita的帖子

这是反模式吗?

目前,我经常遇到遵循以下代码演示的模式的代码。这是一种策略模式。

我不喜欢这个,感觉有点臭。它打破了实际的策略模式,额外的间接性令人困惑。此外,它通常会导致类似于示例中的方法,因为派生类中方法的用途与基类中的方法非常相似。另一方面,我无法用手指指向问题核心。

只有我一个人觉得这很可疑吗?如果没有,这段代码会导致什么问题,特别是在 SOLID 原则方面?

namespace MyTest
{
    abstract class Base
    {
        public void DoSomething()
        {
            var param = Prepare();
            DoItReally(param);
        }

        private string Prepare()
        {
            return "Hallo Welt";
        }

        protected abstract void DoItReally(string param);
    }

    class DerivedOne : Base
    {
        protected override void DoItReally(string param)
        {
            Console.WriteLine(param);
        }
    }

    class DerivedTwo : Base
    {
        protected override void DoItReally(string param)
        {
            Console.WriteLine(param.ToUpper());
        }
    }
    
    static class Program
    {
        public static void Main(string[] args)
        {
            Base strategy = new DerivedOne();
            strategy.DoSomething(); …
Run Code Online (Sandbox Code Playgroud)

c# oop design-patterns anti-patterns solid-principles

1
推荐指数
1
解决办法
106
查看次数