• java设计模式(2)


    工厂模式定义

    在面向对象程序设计中,工厂通常是用来创建其他对象的对象,工产模式根据不同的参数来实现不同的分配方案和创建对象。

    在工产模式中,我们创建对象时不会对客户端暴露创建逻辑,而且是通过使用一个共同的接口来指向新创建的对象。 
    工厂模式通常分为: 
    普通工厂模式 
    多个工厂方法模式 
    静态工厂方法模式

    普通工厂模式

    例如用工厂模式创建人。先创建一个男人,他每天都“吃饭、睡觉、打豆豆”,然后我们再创建一个女人,她每天也“吃饭、睡觉、打豆豆”。 
    代码结构如下图 
    这里写图片描述

    具体代码如下:

    public interface Human {
        public void eat();
        public void sleep();
        public void beat();
    }
    public class Male implements Human {
    
        @Override
        public void eat() {
            // TODO Auto-generated method stub
            System.out.println("Male can eat");
        }
    
        @Override
        public void sleep() {
            // TODO Auto-generated method stub
            System.out.println("Male can sleep");
        }
    
        @Override
        public void beat() {
            // TODO Auto-generated method stub
            System.out.println("Male can beat");
        }
    
    }
    public class female implements Human {
    
        @Override
        public void eat() {
            // TODO Auto-generated method stub
            System.out.println("Female can eat");
        }
    
        @Override
        public void sleep() {
            // TODO Auto-generated method stub
            System.out.println("Female can sleep");
        }
    
        @Override
        public void beat() {
            // TODO Auto-generated method stub
            System.out.println("Female can beat");
        }
    
    }
    public class FactoryTest {
        public static void main(String[] args){
            HumanFactory factory =new HumanFactory();
    
            Human male = factory.createHuman("male");
    
            male.eat();
            male.sleep();
            male.beat();
        }
    }
    public class HumanFactory {
        public Human createHuman(String gender){
            if(gender.equals("male")){
                return new Male();
            }else if(gender.equals("female")){
                return new female();
            }else{
                System.out.println("sorry");
                return null;
            }
        }
    }

    运行结果如下: 
    Male can eat 
    Male can sleep 
    Male can beat

    多个工厂方法模式

    多个工厂模式就是提供多个方法,分别创建对象。

    public class HumanFactory {
    
            public Male createMale(){
                return new Male();
            }
            public female createfemale(){
                return new female();
            }
    
    }

    其他类代码都不变

    静态工厂方法模式

    public class HumanFactory {
    
            public static Male createMale(){
                return new Male();
            }
            public static female createfemale(){
                return new female();
            }
    
    }

    其他类代码不变

  • 相关阅读:
    AOP面向方面编程
    Struts2基于注解的Action配置
    地图api汇总
    Visual C++ 嵌入汇编代码
    C# ASP.net中用到的JWT身份验证
    Asp.Net Forms 身份验证
    .Net 面试常见问题
    Web Api 自动生成帮助文档
    .Net常见的一些区别
    创建Silverlight 5浏览器内受信应用
  • 原文地址:https://www.cnblogs.com/gaoss/p/6617397.html
Copyright © 2020-2023  润新知