您好,刚才看到您回答跳槽的一些解决问题的思维方式,想向您咨询一下

状态是行为设计??模式之一當Object根据其内部状态更改其行为时,将使用状态设计模式

如果我们必须根据对象的状态更改对象的行为,我们可以在Object中有一个状态变量嘫后使用if-else条件块根据状态执行不同的操作。状态设计模式用于提供系统的和松散耦合的方式来实现这一点ContextState实现

状态模式上下文是具有State引用的一个类的具体实现。Context将请求转发给状态对象进行处理让我们用一个简单的例子来理解这一点。

假设我们想用一个简单的按钮来实現TV Remote以执行操作。如果状态为ON它将打开电视,如果状态为OFF它将关闭电视。

我们可以使用if-else条件来实现它如下所示;


 
 
 
 

请注意,客户端代码應该知道用于设置远程状态的特定值此外,如果状态数量增加那么实现和客户端代码之间的紧密耦合将非常难以维护和扩展。

现在我們将使用State模式来实现上面的TV Remote示例

首先,我们将创建State接口该接口将定义应由不同的具体状态和上下文类实现的方法。


状态设计模式 具体實现

在我们的示例中我们可以有两种状态 - 一种用于打开电视,另一种用于关闭电视因此,我们将为这些行为创建两个具体的状态实现



现在我们准备实现我们的Context对象,它将根据其内部状态改变其行为

状态设计模式上下文实现


请注意,Context还实现State并保留其当前状态的引用並将请求转发给状态实现。

现在让我们编写一个简单的程序来测试TV Remote的状态模式实现


 
 
 
 

上述程序的输出与TV Remote的基本实现相同,不使用状态模式

使用State模式实现多态行为的好处显而易见。错误的可能性较小并且很容易为其他行为添加更多状态。从而使我们的代码更加健壮易于維护和灵活。在这种情况下状态模式也有助于避免if-else或switch-case条件逻辑。

这就是java中的状态设计模式我希望你喜欢它。

}

这是一份整理超全的深度学习思維导图涵盖深度学习的基础概念、架构和优化策略,并以TensorFlow为例列举深度学习各个模块的介绍。

  • 第一部分:深度学习的基础概念其是介绍深度学习的基础概念,含神经元、输入层、隐藏层、常见激活函数、反向传播、BN、常见损失函数、正则化、学习率、优化器和权重初始化等内容
  • 第二部分:深度学习结构和策略。其是介绍有基础单元组成不同的神经学习结构如GANs、Auto-Encoders、CNN和RNNs等,以及常见优化策略的具体介紹如SGD、Momentum、Adagrad等。
}

我要回帖

更多关于 解决问题的思维方式 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信