• 设计模式之——抽象工厂模式


              

    工厂模式:定义一个用于创建对象的借口,让子类决定实例化哪一个类。

    抽象工厂模式:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。

    如果产品单一,最合适用工厂模式,但是如果有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。 

    再通俗深化理解下:工厂模式针对的是一个产品等级结构,抽象工厂模式针对的是面向多个产品等级结构的。

    主要实现圣诞和新年与男孩和女孩的结合,以实现多个种类产品

    实现步骤:

    1.创建一个boy类和girl类的接口,然后针对boy类和girl都有两个具体的实现类,分别是新年系列和圣诞系列的。

    1.1 boy类的接口
    package Factory.sunny.project;
    
    public interface Boy {
    
        public void drawMan();;
        
    }

    两个实现类

    package Factory.sunny.project;
    
    public class HNBoy implements Boy {
    
        @Override
        public void drawMan() {
            // TODO Auto-generated method stub
            System.out.println("---------新年男孩---------");
        }
    
    }
    package Factory.sunny.project;
    
    public class MCBoy implements Boy {
    
        @Override
        public void drawMan() {
            // TODO Auto-generated method stub
            System.out.println("----------圣诞男孩------------");
        }
    
    }
    1.2  girl类的接口
    package Factory.sunny.project;
    
    public interface Girl {
    
        public void drawWoman();
    }

    两个实现类

    package Factory.sunny.project;
    
    public class HNGirl implements Girl {
    
        @Override
        public void drawWoman() {
            // TODO Auto-generated method stub
            System.out.println("-----------新年女孩-----------");
        }
    
    }
    package Factory.sunny.project;
    //圣诞系列女孩
    public class MCGirl implements Girl {
    
        @Override
        public void drawWoman() {
            // TODO Auto-generated method stub
        System.out.println("--------圣诞女孩--------");
        }
    
    }
    
    2.接口PersonFactory类提供了两个方法,分别是getBoy()和getGirl()
    package Factory.sunny.project;
    /**
     * 任务实现接口
     * 
     * */
    public interface PersonFactory {
    
        //男孩接口
        public Boy getBoy();
        
        //女孩接口
        public Girl getGirl();   
    }
    
    
    
    
    3.圣诞系列和新年系列工厂实现了PersonFactory类,new出实例对象
    
    package Factory.sunny.project;
    /**
     * 圣诞系列加工厂
     * 
     * */
    public class MCFactory implements PersonFactory {
    
        @Override
        public Boy getBoy() {
            // TODO Auto-generated method stub
            return new MCBoy();
        }
    
        @Override
        public Girl getGirl() {
            // TODO Auto-generated method stub
            return new MCGirl();
        }
    
    }

    package Factory.sunny.project;
    /**
     * 新年系列加工厂
     * 
     * */
    public class HNFactory implements PersonFactory {
    
        @Override
        public Boy getBoy() {
            // TODO Auto-generated method stub
            return new HNBoy();
        }
    
        @Override
        public Girl getGirl() {
            // TODO Auto-generated method stub
            return new HNGirl();
        }
    
    }
    4.测试
          //圣诞女孩
        PersonFactory personFactory=new MCFactory();
        Girl girl=personFactory.getGirl();
        girl.drawWoman();
        
        //新年男孩
        PersonFactory personFactory2=new HNFactory();
        Boy boy=personFactory2.getBoy();
        boy.drawMan();    
     
     
  • 相关阅读:
    24)django-信号
    23)django-缓存
    22)django-中间件
    21)django-csrf(跨站请求伪造)
    20)django-session使用
    19)django-cookie使用
    18)django-模板的过滤器和tag,自定义simple_tag和filter
    17)django-模板的继承与导入
    document.documentElement.clientHeight 和 document.body.clientHeight
    Markdown 入门基础
  • 原文地址:https://www.cnblogs.com/zjfjava/p/6497134.html
Copyright © 2020-2023  润新知