我很困惑,想听听你关于使用强大架构的建议。
1)第一个问题
我使用的模式是mvc端Facade。
在我的项目中,所有的控制器都称为Facade类。facade类调用模型(业务逻辑)
从你的经验来看,这个过程被认为是一种表现?
2)第二个问题
门面模式手册建议使用单一的集中类。
我发疯了:)
假设有一个类(a)包含20个方法,而一个类(B)包含20个其他方法。
Facade类实例化类(A)结束类(B)
我将不得不在Facade类中调用40个方法?
成为一个非常大的班级:(
根据你的经验,你采用了什么制度?
谢谢您。

最佳答案

在你进入“我如何实现它”之前,你应该认真思考为什么要实现它。
立面设计模式
Facade模式通过为其他复杂系统创建更简单的接口来简化您的生活。通常-正如您可能已经注意到的,您使用它来管理多个类(甚至是您有接口的子系统)。
它在实践中的意思是,您将在任何地方使用facade模式,在这些地方您定期使用相同的样板代码(这是非常常见的)执行任务,以便可以用较短的代码替换那些样板代码,或者如果facade将为您提供更干净、更易于管理的代码。另外,您可以使用它来屏蔽内部实现,因此如果某些子系统改变了它们的工作方式,那么您的高级功能将仍然保持不变,并担任相同的角色。
如何建造门面
有一些great examples on wikipedia,我建议你通读它们,特别是简单计算机的代码示例。我用它作为Swift版本的例子:

// --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
// MARK: - Definitions

private let BOOT_ADDRESS = 0


// --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
// MARK: - Subsystems

class CPU {

    func freeze() { }
    func jump(position : Int64) { }
    func execute() { }
}


class Memory {

    func load(position : Int64, data : NSData) { }
}


class HardDrive {

    func read(position : Int64, data : NSData) -> NSData { }
}


// --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
// MARK: - Facade

class Computer {

    // Create all computer subsystems
    let cpu = CPU()
    let memory = Memory()
    let hdd = HardDrive()

    // Implement reason why you are creating this facade
    func start() {

        self.cpu.freeze()
        self.memory.load(BOOT_ADDRESS, data: NSData())
        self.cpu.jump(BOOT_ADDRESS)
        self.cpu.execute()
    }
}

现在你可以看到,你有CPU,内存和硬盘,所有复杂的东西在内部但你只关心外表-电脑。这允许您启动计算机而不必考虑如何启动,例如:
// Create computer object
let computer = Computer()

// Start computer (how is it done is none of your bussiness)
computer.start()

现在你如何解决你的特殊问题取决于你,但你应该遵循类似的想法。别忘了,你应该只使用门面,如果它真的帮助了你。永远不要仅仅因为你知道它是什么就试图使用它(因为人们经常会过度使用那些模式,然后最终得到糟糕的代码)。
希望有帮助!

10-08 07:25