zoukankan      html  css  js  c++  java
  • 设计模式抽象工厂方法模式

    类图

     

    源码

    package skinMan;
    
    public class Client {
        
        public static void main(String[] agrs) throws Exception {
            HumanFactory maleHumanFactory = new MaleFactory();
            HumanFactory femaleHumanFactory = new FemaleFactory();
            
            Human maleYellowHuman = maleHumanFactory.createYellowHuman();
            Human femaleYelloHuman = femaleHumanFactory.createYellowHuman();
            
            maleYellowHuman.getColor();
            maleYellowHuman.talk();
            maleYellowHuman.getSex();
            
            femaleYelloHuman.getColor();
            femaleYelloHuman.talk();
            femaleYelloHuman.getSex();
            
        }
     
    }
    2)    Human.java
    package skinMan;
    
    public interface Human {
        
        public void getColor();
        public void talk();
        public void getSex();
     
    }
    
    3)    HumanFactory.java
    package skinMan;
    
    public interface HumanFactory {
        
        public Human createYellowHuman();
        
        public Human createBlackHuman();
        
        public Human createWhiteHuman();
     
    }
    
    4)    AbstractBlackHuman.java
    package skinMan;
    
    public abstract class AbstractBlackHuman implements Human {
        
        public void talk() {
            
        }
        
        public void getColor() {
            
        }
     
    }
    
    5)    AbstractWhiteHuman.java
    package skinMan;
    
    public abstract class AbstractWhiteHuman implements Human {
         
        public void talk() {
            
            System.out.println("the white people speak english!");
            
        }
        
        public void getColor() {
            
            System.out.println("the white people skin is white!");
            
        }
    }
    
    6)    AbstractYellowHuman.java
    package skinMan;
    
    public abstract class AbstractYellowHuman implements Human{
         
        public void talk() {
            
        }
        
        public void getColor() {
            
        }
    }
    
    7)    MaleFactory.java
    package skinMan;
    
    public class MaleFactory implements HumanFactory{
         
        public Human createYellowHuman() {
            return new MaleYellowHuman();
        }
     
        public Human createBlackHuman() {
            return new MaleBlackHuman();
        }
     
        public Human createWhiteHuman() {
            return new MaleWhiteHuman();
        }
     
    }
    
    8)    MaleBlackHuman.java
    package skinMan;
    
    public class MaleBlackHuman implements Human {
    
        @Override
        public void getColor() {
            // TODO 自动生成的方法存根
            System.out.println("黑色皮肤");
        }
    
        @Override
        public void talk() {
            // TODO 自动生成的方法存根
    
        }
    
        @Override
        public void getSex() {
            // TODO 自动生成的方法存根
            System.out.println("男性");
        }
    
    }
    
    9)    MaleWhiteHuman.java
    package skinMan;
    
    public class MaleWhiteHuman implements Human {
    
        @Override
        public void getColor() {
            // TODO 自动生成的方法存根
            System.out.println("白色皮肤");
        }
    
    
        @Override
        public void getSex() {
            // TODO 自动生成的方法存根
            System.out.println("男性");
        }
    
        @Override
        public void talk() {
            // TODO 自动生成的方法存根
        }
    }
    
    10)    MaleYellowHuman.java
    package skinMan;
    
    public class MaleYellowHuman extends AbstractYellowHuman{
         
        @Override
        public void getColor() {
            // TODO 自动生成的方法存根
            System.out.println("黄色皮肤");
        }
    
        @Override
        public void talk() {
            // TODO 自动生成的方法存根
    
        }
    
        @Override
        public void getSex() {
            // TODO 自动生成的方法存根
            System.out.println("男性");
        }
    
     
    }
    
    11)    FemaleFactory.java
    package skinMan;
    
    public class FemaleFactory implements HumanFactory{
         
        public Human createYellowHuman() {
            return new FemaleYellowHuman();
        }
     
        public Human createBlackHuman() {
            return new FemaleBlackHuman();
        }
     
        public Human createWhiteHuman() {
            return new FemaleWhiteHuman();
        }
     
    }
    
    12)    FemaleBlackHuman.java
    package skinMan;
    
    public class FemaleBlackHuman implements Human {
    
        @Override
        public void getColor() {
            // TODO 自动生成的方法存根
            System.out.println("黑色皮肤");
        }
    
        @Override
        public void talk() {
            // TODO 自动生成的方法存根
    
        }
    
        @Override
        public void getSex() {
            // TODO 自动生成的方法存根
            System.out.println("女性");
        }
    
    }
    
    13)    FemaleWhiteHuman.java
    package skinMan;
    
    public class FemaleWhiteHuman implements Human {
    
        @Override
        public void getColor() {
            // TODO 自动生成的方法存根
            System.out.println("白色皮肤");
        }
    
        @Override
        public void talk() {
            // TODO 自动生成的方法存根
    
        }
    
        @Override
        public void getSex() {
            // TODO 自动生成的方法存根
            System.out.println("女性");
        }
    
    }
    
    14)    FemaleYellowHuman.java
    package skinMan;
    
    public class FemaleYellowHuman extends AbstractYellowHuman{
         
        @Override
        public void getColor() {
            // TODO 自动生成的方法存根
            System.out.println("黄色皮肤");
        }
    
        @Override
        public void talk() {
            // TODO 自动生成的方法存根
    
        }
    
        @Override
        public void getSex() {
            // TODO 自动生成的方法存根
            System.out.println("女性");
        }
    
     
    }

    测试截图

     

  • 相关阅读:
    推荐几款很棒的 JavaScript 表单美化和验证插件
    开源来自百度商业前端数据可视化团队的超漂亮动态图表--ECharts
    两种高性能 I/O 设计模式 Reactor 和 Proactor
    基本排序算法:Python实现
    局域网聊天软件(winsocket)
    MFC控件(8):command button与syslink control
    Linux python2.4升级到2.7
    调色板QPalette类用法详解(附实例、源码)(很清楚:窗口背景色 前景色 按钮的颜色 按钮文本的颜色 )
    在IT公司,project manager 基本上和秘书,助理什么的差不多
    Qt之OpenSSL(有pro文件的路径格式,以及对libeay32和ssleay32的引用)
  • 原文地址:https://www.cnblogs.com/lx06/p/15688333.html
Copyright © 2011-2022 走看看