相关疑难解决方法(0)

设计模式:工厂与工厂方法与抽象工厂

我正在从网站上阅读设计模式

在那里我读到了有关工厂,工厂方法和抽象工厂的信息,但它们很混乱,我对定义并不清楚.根据定义

Factory - 创建对象而不将实例化逻辑暴露给客户端,并通过公共接口引用新创建的对象.是Factory Method的简化版本

工厂方法 - 定义用于创建对象的接口,但让子类决定实例化哪个类,并通过公共接口引用新创建的对象.

抽象工厂 - 提供用于创建相关对象族的界面,而无需明确指定其类.

我还查看了关于抽象工厂与工厂方法的其他stackoverflow线程,但是那里绘制的UML图使我的理解更加糟糕.

有谁能告诉我

  1. 这三种模式如何相互不同?
  2. 什么时候用哪个?
  3. 如果可能的话,任何与这些模式相关的java示例?

java language-agnostic design-patterns factory factory-method

164
推荐指数
6
解决办法
8万
查看次数

战略模式的现实世界范例

我一直在阅读有关OCP主要内容以及如何使用策略模式来实现这一目标.

我打算尝试向几个人解释这个,但我能想到的唯一例子是根据"订单"的状态使用不同的验证类.

我在线阅读了几篇文章,但这些文章通常没有描述使用该策略的真实原因,如生成报告/账单/验证等...

是否有任何现实世界的例子,您认为策略模式是常见的?

c# java design-patterns strategy-pattern

88
推荐指数
9
解决办法
7万
查看次数

适用于支付模块的设计模式c#

我正在通过设计模式概念学习,并且还希望使用适当的设计模式在我的项目中实现支付模块.所以我为此创建了一些示例代码.

目前我有两个具体的付款实施PayPalCredit Card.但具体实施将在项目中进一步增加.

付款服务

public interface IPaymentService
{
    void MakePayment<T>(T type) where T : class;
}
Run Code Online (Sandbox Code Playgroud)

信用卡和Pay Pal服务

public class CreditCardPayment : IPaymentService
{
    public void MakePayment<T>(T type) where T : class
    {
        var creditCardModel = (CreditCardModel)(object)type;
        //Implementation CreditCardPayment
    }
}

class PayPalPayment : IPaymentService
{
    public void MakePayment<T>(T type) where T : class
    {
        var payPalModel = (PayPalModel)(object)type;
        //Further Implementation will goes here
    }
}
Run Code Online (Sandbox Code Playgroud)

客户端代码实现

var obj = GetPaymentOption(payType);
obj.MakePayment<PayPalModel>(payPalModel);
Run Code Online (Sandbox Code Playgroud)

获得付款选项

private static IPaymentService …
Run Code Online (Sandbox Code Playgroud)

c# design-patterns

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

策略和工厂设计模式有什么区别?

当我仔细观察策略和工厂设计模式时,其外观几乎相似。我们可以使用任何一种模式来实现解决方案。然后我想知道什么时候使用什么。

design-patterns

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

工厂模式中使用的策略模式?

我正在用工厂模式编写代码.在switch的情况下,我实际上是返回Class对象.使用这个返回类,我将调用一个方法.这是战略模式的一个例子吗?

using System;
using System.Linq;

namespace ConsoleApplication1
{
    public interface IVehicle
    {
          void Manufacture();
    }

    public class Car : IVehicle
    {
        public void Manufacture()
        {
            Console.WriteLine("Car Manufacturing");
         }
     }

     public class Bike : IVehicle
     {
         public void Manufacture()
         {
            Console.WriteLine("Bike Manufacturing");
         }
     }

     public static class factory
     {
         public static IVehicle GetVehicle(string name)
         {
            switch(name)
            {
                case "Car":
                    return new Car();
                case "Bike":
                    return new Bike();
                default:
                    throw new ArgumentException();
            }
        }
    }

    public class program
    {
        public static void …
Run Code Online (Sandbox Code Playgroud)

c# design-patterns

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