用户选择电影的设计模式

时间:2017-09-06 07:43:42

标签: design-patterns

我在设计解决方案时需要一般性的建议。

我的一般思维过程是:

  1. 在界面中定义所需的功能,并创建一个类来扩展界面。
  2. 让我们说用户必须登录某个Cinema网站,然后我们需要

    // 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);
        }
    }
    
    ...
    

    在这个设计中,我在这里拥有所有必需的对象,如Authenticate,DisplayUi等。但是通过这种方式,我可能不得不在用户类中使用许多对象(更像是Facade Pattern)。

    这是正确的方法吗?请建议我,如果可以更好的方式实施。

1 个答案:

答案 0 :(得分:1)

回答你的问题是面向对象的设计。您提到的应用程序是一个完整的系统。通常,这种系统分布在至少3层,即演示,业务和持久性。上面显示的样本设计尚未通过设计生命周期。分析阶段似乎已完全被忽略。出现错误设计的典型症状是

  1. 使用IClass作为接口的每个类:除了复制API之外,此类接口不起任何作用。界面有权在运行时更改任何对象的角色。
  2. 听起来像动词'而不是名称(例如,Authenticate)。这些课程将把它推向程序设计。
  3. 直接与表示层(例如DisplayUI)连接的实体类(例如用户)
  4. 而不是简短的修复,它需要通过面向对象的设计过程。坚实的原则也有助于更好地理解它。