Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 供用户选择电影的设计模式_Design Patterns - Fatal编程技术网

Design patterns 供用户选择电影的设计模式

Design patterns 供用户选择电影的设计模式,design-patterns,Design Patterns,在设计解决方案的过程中,我需要一般性的建议 我的一般思维过程是: 在接口中定义所需的功能,并创建一个类来扩展接口 假设用户必须登录某个电影院网站,那么我们需要 // id, password, address, name, age, sex etc. of the User // login method which authenticates the login // default Display of Movies after login // Displaying the list as

在设计解决方案的过程中,我需要一般性的建议

我的一般思维过程是:

  • 在接口中定义所需的功能,并创建一个类来扩展接口
  • 假设用户必须登录某个电影院网站,那么我们需要

    // id, password, address, name, age, sex etc. of the User
    // login method which authenticates the login
    // default Display of Movies after login
    // Displaying the list as per the chosen type (select the choices of "TRENDING","MYTHOLOGY", ACTION" Movies).
    
    疑问:

    所以我定义了一个类,如下所示:

    public class User implements IUSER {
        private String id;
        private String password;
        private Authenticate authenticate;
        private DisplayUI displayUI;
    ..
    ..
    ..
        User()
        {
          authenticate = new Authenticate();
          displayUI = new DisplayUI();
        }
    
        public String getUserName() {
            return userName;
        }
    
        private String userName;
    
        @Override
        public void login() {
           authenticate.verify(userName,password);
            select("ACTION");
        }
    
        @Override
        public void select(String Type) {
           displayUI.display(Type);
        }
    }
    
    ...
    
    在这个设计中,我在这里拥有所有必需的对象,如身份验证、显示UI等。但是通过这种方式,我可能不得不在用户类中使用许多对象(更像是门面模式)


    这条路对吗?如果可以更好地实现,请向我推荐。

    您的问题的答案是面向对象设计。您提到的应用程序是一个完整的系统。一般来说,这样的系统至少分布在3个层上,即表示层、业务层和持久性层。上面所示的示例设计尚未通过设计生命周期。分析阶段似乎被完全跳过了。走向错误设计的典型症状是

  • 以IClass作为接口的每个类:这些接口除了复制API之外,没有任何其他用途。接口有权在运行时更改任何对象的角色
  • 类名听起来像“动词”而不是名称(例如,Authenticate)。这样的课程将推动它快速走向程序设计
  • 与表示层(如DisplayUI)直接连接的实体类(如用户)

  • 它需要经历一个面向对象的设计过程,而不是短期修复。坚实的原则也有助于更好地理解它。

    @Kedar。谢谢Kedar。你能给我推荐一本书/一个网站吗?这本书/网站提供了这样的例子,让我经历一个面向对象的设计过程的例子,这对开发人员来说是非常互动的examples@Shriharsha下面的书很好。Grady Booch的《面向对象的应用分析与设计》。2.用UML进行面向对象的建模和设计,作者:Michael R.Blaha,James R Rumbaugh。布拉哈在YouTube上有一些视频。