精华内容
下载资源
问答
  • 设计模式课程设计

    2017-11-30 11:13:27
    设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式
  • 设计模式课程设计.rar

    2021-03-11 13:17:12
    设计模式课程设计
  • 设计模式课程设计模板
  • 画图画板设计模式课程设计任务书 长 沙 学 院课 程 设 计 说 明 书题目 设计模式课程设计系(部) 数学与计算机科学系专业(班级) 数媒 2 班姓名 胡辉衡学号 B20140304401指导教师 朱建凯起止日期 2016 年 12 月 19 日...

    41528d3028836879cd698677c3999917.gif画图画板设计模式课程设计任务书

    长 沙 学 院课 程 设 计 说 明 书题目 设计模式课程设计系(部) 数学与计算机科学系专业(班级) 数媒 2 班姓名 胡辉衡学号 B20140304401指导教师 朱建凯起止日期 2016 年 12 月 19 日课程设计任务书课程名称:设计模式课程设计设计题目:基于设计模式的绘图程序已知技术参数和设计要求:1. 问题描述(功能要求):1.需求分析该系统是一个画图程序,我们要用设计模式的思想来设计系统结构,然后实现基本图形的绘制功能。1.1 设计模式要求至少在其中运用 3 种模式,其中涉及到的模式有装饰模式、策略模式、桥梁模式三种。1.2 画图基本要求能实现基本图形的绘制功能1.3 画图高级要求实现图形的操作(如选取、移动、放大、缩小、改变颜色、改变线形等)和持久化(利用文件或利用数据库) 。1.4 参考界面图 1 参考效果图 1图 2 参考效果图 22. 运行环境要求:Windows 操作系统;Eclipse3. 技术要求:给出至少 3 种设计模式,要求具体说明使用每种设计模式的动机,画出类图,并代码实现,然后评价该设计模式的优缺点。设计工作量:2 周工作计划:(1) 2014 级软件工程4 课时:讲授32 课时:上机、调试。计算机系机房4 课时:答辩。计算机系机房。指导教师签名: 日期: 教研室主任签名: 日期: 系主任签名: 日期: 长沙学院课程设计鉴定表姓名 胡辉衡 学号 B20140304401专业 数字媒体 班级 2设计题目 基于设计模式的绘图程序 指导教师 朱建凯指导教师意见:评定等级: 教师签名: 日期: 答辩小组意见:评定等级: 答辩小组长签名: 日期: 教研室意见:教研室主任签名: 日期: 系(部)意见:系主任签名: 日期: 说明 课程设计成绩分“优秀” 、 “良好” 、 “及格” 、 “不及格”四类;目录第 1 章 系统需求 81.1 系统总需求 81.2 功能需求 .8第 3 章 系统设计 93.1 系统总功能模块设计 93.2 子功能模块设计 93.2.1 构建基本图形 93.2.2 装饰模式组合图形 103.2.3 桥接模式修饰图形颜色线条粗细 .10第 4 章 系统实现 114.1 简单工厂模式绘制基本图形 114.1.1 装饰模式图形组合 134.1.2 桥接模式改变粗细绘制图形 14第 5 章 系统测试 155.1 测试目的 155.2 测试手段 155.3 测试用例 155.3.1 登陆界

    展开全文
  • java设计模式课程设计

    2020-10-13 12:41:37
    使用5种设计模式完成的一个点单系统,显示不同系列下的所有商品,点击选择冰度甜度之后添加到订单中,计算总金额,下单之后发送订单到门店的后厨制作商品。使用了抽象工厂模式、装饰模式、单例模式、代理模式、原型...
  • 设计模式课程设计:手机电脑商店项目简介抽象工厂模式单例模式代理模式 项目简介 该项目运用了三种设计模式:抽象工厂模式,单例模式,代理模式。用户可以在商店里购买自己想要的手机和电脑。项目运行环境为...

    设计模式课程设计:手机电脑商店

    项目简介

      该项目运用了三种设计模式:抽象工厂模式,单例模式,代理模式。
      用户可以在商店里购买自己想要的手机和电脑。项目运行环境为Netbeans8.2。
      运行效果如下:
    

    进入商店界面,这里运用了单例模式,不管怎么点击进入商店按钮,只会有一个窗体弹出
    在这里插入图片描述
    进入商店,用户可以选择自己要购买的东西。

    在这里插入图片描述
    用户购买成功
    在这里插入图片描述

    抽象工厂模式

    抽象工厂:

    package AbstractFactory;
    public interface EFactory {
        public Phone producePhone();
        public Computer produceComputer();
    }
    

    抽象产品:

    package AbstractFactory;
    public interface Computer {
        public String produce ();
    }
    
    package AbstractFactory;
    public interface Phone {
        public String produce();
    }
    

    具体工厂:

    package AbstractFactory;
    public class HuaWeiFactory implements EFactory {
        public HuaWeiFactory() {
        }
        public Phone producePhone() {
            return new HuaWeiPhone();
        }
        public Computer produceComputer() {
            return new HuaWeiComputer();
        }
    
    }
    
    package AbstractFactory;
    public class XiaoMiFactory implements EFactory {
        public XiaoMiFactory() {
        }
        public Phone producePhone() {
            return new XiaoMiPhone();
        }
        public Computer produceComputer() {
            return new XiaoMiComputer();
        }
    }
    

    具体产品:

    package AbstractFactory;
    import Agent.AgentFrame;
    public class HuaWeiComputer implements Computer {
        public HuaWeiComputer() {
        }
        public String produce() {
            System.out.println("华为电脑生产中......");
            String str = "华为电脑生产中......";
            return str;
        }
    }
    
    package AbstractFactory;
    import Agent.AgentFrame;
    public class HuaWeiPhone implements Phone {
        public HuaWeiPhone() {
        }
        public String produce() {
            System.out.println("华为手机生产中......");
            String str = "华为手机生产中......";
            return str;
        }
    }
    
    package AbstractFactory;
    import Agent.AgentFrame;
    public class XiaoMiComputer implements Computer {
        public XiaoMiComputer() {
        }
        public String produce() {
            System.out.println("小米电脑生产中......");
            String str = "小米电脑生产中......";
            return str;
        }
    }
    
    package AbstractFactory;
    import Agent.AgentFrame;
    public class XiaoMiPhone implements Phone {
        public XiaoMiPhone() {
        }
        public String produce() {
            System.out.println("小米手机生产中......");
            String str = "小米手机生产中......";
            return str;
        }
    }
    

    单例模式

    package company;
    
    import AbstractFactory.Computer;
    import AbstractFactory.EFactory;
    import AbstractFactory.HuaWeiComputer;
    import AbstractFactory.HuaWeiFactory;
    import AbstractFactory.HuaWeiPhone;
    import AbstractFactory.Phone;
    
    public class HuaWeiCompany {
    
        private static HuaWeiCompany huaweiCompany = null;
        private RealHuaWei realhuawei = new RealHuaWei();
    
        private HuaWeiCompany() {
        }
    
        public static HuaWeiCompany getHuaweiCompany() {
            if (huaweiCompany == null) {
                huaweiCompany = new HuaWeiCompany();
            }
            return huaweiCompany;
        }
    
        public Phone getPhoneProducts() {
            return realhuawei.getPhoneProducts();
        }
    
        public Computer getComputerProducts() {
            return realhuawei.getComputerProducts();
        }
    }
    
    
    package company;
    
    import AbstractFactory.Computer;
    import AbstractFactory.EFactory;
    import AbstractFactory.HuaWeiComputer;
    import AbstractFactory.HuaWeiFactory;
    import AbstractFactory.HuaWeiPhone;
    import AbstractFactory.Phone;
    import AbstractFactory.XiaoMiComputer;
    import AbstractFactory.XiaoMiFactory;
    import AbstractFactory.XiaoMiPhone;
    
    public class XiaoMiCompany {
    
        EFactory factory;
        Computer computer;
        Phone phone;
    
        private static XiaoMiCompany xiaomiCompany = null;
        private RealXiaoMi realxiaomi = new RealXiaoMi();
    
        private XiaoMiCompany() {
        }
    
        public static XiaoMiCompany getXiaomiCompany() {
            if (xiaomiCompany == null) {
                xiaomiCompany = new XiaoMiCompany();
            }
            return xiaomiCompany;
        }
    
        public Computer getComputerProducts() {
            return realxiaomi.getComputerProducts();
        }
    
        public Phone getPhoneProducts() {
            return realxiaomi.getPhoneProducts();
        }
    
    }
    
    

    代理模式

    package company;
    import AbstractFactory.Computer;
    import AbstractFactory.Phone;
    public interface Permission {
        public Phone getPhoneProducts();
        public Computer getComputerProducts();
    }
    
    package company;
    import AbstractFactory.Computer;
    import AbstractFactory.Phone;
    public interface Permission_2 {
        public Phone getPhoneProducts();
        public Computer getComputerProducts();
    }
    
    package company;
    import AbstractFactory.Computer;
    import AbstractFactory.*;
    import AbstractFactory.Phone;
    public class RealHuaWei implements Permission {
    
        EFactory factory;
        Computer computer;
        Phone phone;
    
        public Phone getPhoneProducts() {
            factory = new HuaWeiFactory();
            phone = new HuaWeiPhone();
            phone.produce();
            return phone;
        }
    
        @Override
        public Computer getComputerProducts() {
            factory = new HuaWeiFactory();
            computer = new HuaWeiComputer();
            computer.produce();
            return computer;
        }
    
    }
    
    package company;
    import AbstractFactory.*;
    public class RealXiaoMi {
        EFactory factory;
        Computer computer;
        Phone phone;
        public Computer getComputerProducts() {
            factory = new XiaoMiFactory();
            computer = new XiaoMiComputer();
            computer.produce();
            return computer;
        }
        public Phone getPhoneProducts() {
            factory = new XiaoMiFactory();
            phone = new XiaoMiPhone();
            phone.produce();
            return phone;
        }
    }
    

    商店:

    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package Agent;
    
    import javax.swing.JButton;
    import javax.swing.JLabel;
    
    /**
     *
     * @author 12995
     */
    public class WelcomeFrame extends javax.swing.JFrame {
    
        private AgentFrame f2;
    
        /**
         * Creates new form WelcomeFrame
         */
        public WelcomeFrame() {
            initComponents();
        }
    
        /**
         * This method is called from within the constructor to initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is always
         * regenerated by the Form Editor.
         */
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
        private void initComponents() {
    
            jButton_Enter = new javax.swing.JButton();
            jLabel1 = new javax.swing.JLabel();
    
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    
            jButton_Enter.setText("进入商店");
            jButton_Enter.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jButton_EnterActionPerformed(evt);
                }
            });
    
            jLabel1.setText("手机电脑专卖店");
    
            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(layout.createSequentialGroup()
                            .addGap(105, 105, 105)
                            .addComponent(jButton_Enter, javax.swing.GroupLayout.PREFERRED_SIZE, 254, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGroup(layout.createSequentialGroup()
                            .addGap(182, 182, 182)
                            .addComponent(jLabel1)))
                    .addContainerGap(112, Short.MAX_VALUE))
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                    .addContainerGap(107, Short.MAX_VALUE)
                    .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGap(87, 87, 87)
                    .addComponent(jButton_Enter)
                    .addGap(31, 31, 31))
            );
    
            pack();
        }// </editor-fold>                        
    
        private void jButton_EnterActionPerformed(java.awt.event.ActionEvent evt) {                                              
            // TODO add your handling code here:
            f2 = AgentFrame.getInstance();
            f2.setVisible(true);
            f2.setLocationRelativeTo(null);
            
        }                                             
    
        /**
         * @param args the command line arguments
         */
        public static void main(String args[]) {
            /* Set the Nimbus look and feel */
            //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
            /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
             * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
             */
            try {
                for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                    if ("Nimbus".equals(info.getName())) {
                        javax.swing.UIManager.setLookAndFeel(info.getClassName());
                        break;
                    }
                }
            } catch (ClassNotFoundException ex) {
                java.util.logging.Logger.getLogger(WelcomeFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                java.util.logging.Logger.getLogger(WelcomeFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                java.util.logging.Logger.getLogger(WelcomeFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (javax.swing.UnsupportedLookAndFeelException ex) {
                java.util.logging.Logger.getLogger(WelcomeFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            }
            //</editor-fold>
    
            /* Create and display the form */
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new WelcomeFrame().setVisible(true);
                }
            });
        }
    
        public JButton getjButton_Enter() {
            return jButton_Enter;
        }
    
        public void setjButton_Enter(JButton jButton_Enter) {
            this.jButton_Enter = jButton_Enter;
        }
    
        public JLabel getjLabel1() {
            return jLabel1;
        }
    
        public void setjLabel1(JLabel jLabel1) {
            this.jLabel1 = jLabel1;
        }
    
        // Variables declaration - do not modify                     
        private javax.swing.JButton jButton_Enter;
        private javax.swing.JLabel jLabel1;
        // End of variables declaration                   
    }
    
    
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package Agent;
    
    import AbstractFactory.Computer;
    import AbstractFactory.EFactory;
    import AbstractFactory.HuaWeiComputer;
    import AbstractFactory.HuaWeiPhone;
    import AbstractFactory.Phone;
    import AbstractFactory.XiaoMiComputer;
    import AbstractFactory.XiaoMiPhone;
    import company.HuaWeiCompany;
    import company.XiaoMiCompany;
    import javax.swing.JTextArea;
    
    /**
     *
     * @author 12995
     */
    public class AgentFrame extends javax.swing.JFrame {
    
        EFactory factory;
        Computer computer;
        Phone phone;
    
        private static AgentFrame SingletonFrame = null;
        //public AbstractPermission permission = new PermissionProxy();
        HuaWeiCompany hwc = HuaWeiCompany.getHuaweiCompany();
        XiaoMiCompany xmc = XiaoMiCompany.getXiaomiCompany();
    
        /**
         * Creates new form AgentFrame
         */
        private AgentFrame() {
            initComponents();
        }
    
        public static AgentFrame getInstance() {
            if (SingletonFrame == null) {
                SingletonFrame = new AgentFrame();
            }
            return SingletonFrame;
        }
    
        /**
         * This method is called from within the constructor to initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is always
         * regenerated by the Form Editor.
         */
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
        private void initComponents() {
    
            jLabel1 = new javax.swing.JLabel();
            jCheckBox1 = new javax.swing.JCheckBox();
            jCheckBox2 = new javax.swing.JCheckBox();
            jCheckBox3 = new javax.swing.JCheckBox();
            jCheckBox4 = new javax.swing.JCheckBox();
            jButton_Buy = new javax.swing.JButton();
            jPanel1 = new javax.swing.JPanel();
            jScrollPane2 = new javax.swing.JScrollPane();
            jTextArea_Display = new javax.swing.JTextArea();
    
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    
            jLabel1.setText("欢迎光临本商店");
    
            jCheckBox1.setText("华为手机");
    
            jCheckBox2.setText("华为电脑");
    
            jCheckBox3.setText("小米手机");
    
            jCheckBox4.setText("小米电脑");
    
            jButton_Buy.setText("购买");
            jButton_Buy.addMouseListener(new java.awt.event.MouseAdapter() {
                public void mouseClicked(java.awt.event.MouseEvent evt) {
                    jButton_BuyMouseClicked(evt);
                }
            });
    
            jTextArea_Display.setColumns(20);
            jTextArea_Display.setRows(5);
            jScrollPane2.setViewportView(jTextArea_Display);
    
            javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
            jPanel1.setLayout(jPanel1Layout);
            jPanel1Layout.setHorizontalGroup(
                jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jScrollPane2)
            );
            jPanel1Layout.setVerticalGroup(
                jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 219, Short.MAX_VALUE)
            );
    
            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(layout.createSequentialGroup()
                            .addGap(180, 180, 180)
                            .addComponent(jLabel1)
                            .addGap(0, 0, Short.MAX_VALUE))
                        .addGroup(layout.createSequentialGroup()
                            .addContainerGap()
                            .addComponent(jCheckBox1)
                            .addGap(47, 47, 47)
                            .addComponent(jCheckBox2)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 48, Short.MAX_VALUE)
                            .addComponent(jCheckBox3)
                            .addGap(41, 41, 41)
                            .addComponent(jCheckBox4)))
                    .addContainerGap())
                .addGroup(layout.createSequentialGroup()
                    .addGap(182, 182, 182)
                    .addComponent(jButton_Buy)
                    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addComponent(jLabel1)
                    .addGap(29, 29, 29)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jCheckBox1)
                        .addComponent(jCheckBox2)
                        .addComponent(jCheckBox3)
                        .addComponent(jCheckBox4))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addComponent(jButton_Buy)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
            );
    
            pack();
        }// </editor-fold>                        
    /**/
        private void jButton_BuyMouseClicked(java.awt.event.MouseEvent evt) {                                         
            // TODO add your handling code here:
    
            if (jCheckBox1.isSelected()) {
                HuaWeiPhone HWP;
                // HWP = (HuaWeiPhone) permission.buyHWPProducct("华为手机");
                HWP=(HuaWeiPhone) hwc.getPhoneProducts();
                jTextArea_Display.append(HWP.produce() + "\n");
                jTextArea_Display.append("这是您要购买的华为手机,请拿好!\n");
                jTextArea_Display.append("\n");
            }
            if (jCheckBox2.isSelected()) {
                HuaWeiComputer HWC;
                //HWC = (HuaWeiComputer) permission.buyHWCProducct("华为电脑");
                HWC=(HuaWeiComputer) hwc.getComputerProducts();
                jTextArea_Display.append(HWC.produce() + "\n");
                jTextArea_Display.append("这是您要购买的华为电脑,请拿好!\n");
                jTextArea_Display.append("\n");
            }
            if (jCheckBox3.isSelected()) {
                XiaoMiPhone XMP;
                //XMP = (XiaoMiPhone) permission.buyXMPProducct("小米手机");
                XMP= (XiaoMiPhone) xmc.getPhoneProducts();
                jTextArea_Display.append(XMP.produce() + "\n");
                jTextArea_Display.append("这是您要购买的小米手机,请拿好!\n");
                jTextArea_Display.append("\n");
            }
            if (jCheckBox4.isSelected()) {
                XiaoMiComputer XMC;
                //XMC = (XiaoMiComputer) permission.buyXMCProducct("小米电脑");
                XMC=(XiaoMiComputer)xmc.getComputerProducts();
                jTextArea_Display.append(XMC.produce() + "\n");
                jTextArea_Display.append("这是您要购买的小米电脑,请拿好!\n");
                jTextArea_Display.append("\n");
            }
        }                                        
    
        public JTextArea getjTextArea_Display() {
            return jTextArea_Display;
        }
    
        public void setjTextArea_Display(JTextArea jTextArea_Display) {
            this.jTextArea_Display = jTextArea_Display;
        }
    
        // Variables declaration - do not modify                     
        private javax.swing.JButton jButton_Buy;
        private javax.swing.JCheckBox jCheckBox1;
        private javax.swing.JCheckBox jCheckBox2;
        private javax.swing.JCheckBox jCheckBox3;
        private javax.swing.JCheckBox jCheckBox4;
        private javax.swing.JLabel jLabel1;
        private javax.swing.JPanel jPanel1;
        private javax.swing.JScrollPane jScrollPane2;
        private javax.swing.JTextArea jTextArea_Display;
        // End of variables declaration                   
    }
    

    NetBeans8.2UML插件安装地址: http://updates.netbeans.org/netbeans/updates/6.5/uc/final/stable/catalog_zh_CN.xml.gz
    NetBeans8.2安装UML教程请自行百度。
    项目源码:JavaApplication1_1
    类图:UMLProject1

    展开全文
  • 本系统使用Java代码实现,是设计模式的期末课程设计,共使用了5种设计模式,分别是**原型模式、单例模式、抽象工厂模式、代理模式、建造者模式。*,希望对各位有帮助
  • 1.1 设计模式 1.2 设计原则 1.3 uml 1.4 内存分析 1.5 JDK源码解析 1.6 debug方式(多线程debug) 1 概述 1.1 设计模式 创建型模式:工厂方法模式,抽象工厂模式,建造者模式,单例模式,原型...

    1    概述

    1.1  设计模式

    1.2  设计原则

    1.3  uml

    1.4  内存分析

    1.5  JDK源码解析

    1.6  debug方式(多线程debug)

     

     

     

    1    概述

    1.1  设计模式

    创建型模式:工厂方法模式,抽象工厂模式,建造者模式,单例模式,原型模式

    结构型模式:适配器模式,装饰者模式,代理模式,外观模式,桥接模式,组合模式,享元模式

    行为型模式:策略模式,观察者模式,责任链模式,备忘录模式,模版方法模式,迭代器模式,中介者模式,命令模式,访问者模式,解释器模式,状态模式

     

    1.2  七大设计原则

    开闭原则,依赖倒置原则,单一职责原则,接口隔离原则,迪米特原则,里氏替换原则,合成复用原则

     

    1.3  uml入门

    基础,uml类图,uml时序图,uml类关系,uml记忆技巧

     

    1.4  内存分析

     反射攻击,序列化破坏

     

    1.5  JDK源码解析

    jdk,spring,java,SpringJDBC,SpringSession,MyBaties,Tomcat,LogBack,Java等

     

    1.6  debug方式(多线程debug)

     

    1.7  实战工程:(Tomcat集群与Redis分布式)

    转载于:https://www.cnblogs.com/1446358788-qq/p/10889300.html

    展开全文
  • 设计模式期末课程设计 本文记录一下我设计模式期末的课程设计,要求用使用5个以上不同的设计模式完成 其实就是一个小系统,代码挺简单的,但要融合多个设计模式,所以代码还是挺多的(大概18~19个类),因此这里...

    设计模式期末课程设计

    本文记录一下我设计模式期末的课程设计,要求用使用5个以上不同的设计模式完成
    其实就是一个小系统,代码挺简单的,但要融合多个设计模式,所以代码还是挺多的(大概18~19个类),因此这里代码就不贴出来了,文章最后会给出源代码的下载链接

    本系统模拟可乐代理商从进货到可乐公司生产发货以及销售给顾客的整个过程。可细分为以下三个部分:
    (1)可乐代理商选择进货,同时发送邮件通知可乐公司
    (2)可乐公司生产可乐,及时发货并提醒代理商收货
    顾客购买可乐,选择拿货方式,并生成订单
    共使用了5种设计模式,分别是原型模式、单例模式、抽象工厂模式、代理模式、建造者模式。

    运行界面

    简单贴几张运行截图:
    1、代理商选择进货:选择“可口可乐”,点击“确定”按钮
    在这里插入图片描述

    2、可乐公司生产,发货提醒:点击“发货&提醒”按钮
    在这里插入图片描述

    3、顾客购买商品:选择收货方式,如:“快递送达”,点击“确定”按钮。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    源代码下载链接:

    https://download.csdn.net/download/felix_ar/10861207

    ps:没有积分的同学,可以在评论里留下邮箱,我看到的话会发给你。
    因为留言的同学很多,为了避免遗漏,以后不再发邮箱了,直接把源代码放到网盘,链接和提取码下方自提,需要的自行下载吧:
    链接:https://pan.baidu.com/s/1LlDIQPKDnP0sbjut6QyHCg
    提取码:ljtv
    (还有部分问有没有文档的,统一回复:已经找不到了。。。而且代码挺简单的应该不难弄懂)

    展开全文
  • 1 课程讲解 1.1 应用场景 2 代码演练 1.1 容器单例 ...可以应用在懒汉模式中,不适用于饿汉模式(饿汉模式由于每次都要重新初始化会出现多线程安全问题) 使用hashtable会线程安全,但是由于其...
  • 1 克隆对象的引用问题:查看克隆出的对象是否是同一个对象(参考9-4) 2 工厂方法和抽象工厂 最大的区别是什么 3 产品镞和产品等级结构 转载于:https://www.cnblogs.com/1446358788-qq/p/11470786.html...
  • 1.7 和其他设计模式的比较 1 课程讲解 1.1 类型: 结构型 1.2 定义: 将一个类的接口转换成客户期望的另一个接口◆使原本接口不兼容的类可以一起工作 1.3 适用场景: ◆已经存在的...
  • 1.6 与其他设计模式关系: 1 课程讲解 1.1 类型: 结构型 1.2 定义: ◆定义:为其他对象提供一种代理,以控制对这个对象的访问◆代理对象在客户端和目标对象之间起到中介的作用 比喻:目标...
  • 餐饮店点餐系统实现为顾客展现本店所准备各类食物、顾客选餐、顾客选择支付方式、顾客可提出建议以及给顾客打印发票等问题,本系统涉及到工厂模式、策略模式、中介者模式、观察者模式以及模版方法模式
  • 1 代码演练 1.1 代码演练1 1.2 代码演练2(后端课程子类运用钩子方法,加入写...木木网制作课程视频父类,前端课程子类和设计模式子类。父类需要制作PPT,制作视频,制作手记,包装课程四个部分,且步骤基本一...
  • 1.1 代码演练1(组合模式1) 1.2 代码演练2(组合模式1之完善) 1 代码演练 1.1 代码演练1(组合模式1) 需求: 打印出木木网的课程结构, 我们用一个组建类作为接口,课程类和目录类继承。 uml: ...
  • 1.6 与其他设计模式关系: 1 课程讲解 1.1 类型: 行为型 1.2 定义: ◆定义:提供一种方法,顺序访问一个集合对象中的各个元素,而又不暴露该对象的内部表示 1.3 适用场景: ◆访问一个集合...
  • 1.6 相关联设计模式对比 1 课堂讲解 1.1 类型 类型:结构型 1.2 定义 定义:又叫门面模式,提供了一个统一的接口,用来访问子系统中的一群接口 外观模式定义了一个高层接口,让子系统更容易使用 ...
  • 1.7 和其他设计模式比较: 1 课程讲解 1.1 类型: 结构型: 1.2 定义: ◆定义:提供了减少对象数量从而改善应用所需的对象结构的方式◆运用共享技术有效地支持大量细粒度的对象 (可能对于内存溢出...
  • 1.7 与其他设计模式关系: 1 课程讲解 1.1 类型: 行为型 1.2 定义: ◆定义:定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现◆模板方法使得子类可以在不改变算法结构的情况下,...
  • 1 代码演练 ...根据讲师提供的课程名称,课程ppt,课程视频,课程手记,课程问答 制作教学课程。 重点: 教练类coach.java标红部分,builder设值,然后赋值(看test.java)。 uml类图: ...
  • 1.6 关联设计模式 1.7 其他知识点 1 课程讲解 1.1 类型 结构型 1.2 定义 ◆定义:在不改变原有对象的基础之上,将功能附加到对象上 提供了比继承更有弹性的替代方案(扩展原有对象功能) 比如说:...
  • 1.6 与其他设计模式关系: 1 桥接模式讲解 1.1 类型: 结构型 1.2 定义: ◆定义:将抽象部分与它的具体实现部分分离,使它们都可以独立地变化◆合成复用原则中提到:优先通过组合的方式建立两个类...
  • 1 课程讲解 1.1 应用场景 2 代码演练 2.1 threadLocal应用 ...1 课程讲解 ...使用同步锁使用时间换空间的方式,...基于threadlocal的单例模式,为每一个线程提供了一个对象,多线程访问的时候不会相互影响。 ...
  • 1.7 单例-相关设计模式 1 课堂概述 1.1 定义 定义:保证一个类仅有一个实例,并提供一个全局访问点 类型:创建型 1.2 使用场景 a ◆想确保任何情况下都绝对只有一个实例 b 当一个对象需要频繁的被....
  • 1 课程讲解 ...简单工厂模式严格意义上说并不是一种设计模式,它是一种编码上的风格和习惯。 1.2 应用此场景 3.1 工厂类负责创建的对象比较少;3.2 客户端只知道传入工厂类的参数,对于如何创建...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,663
精华内容 2,665
关键字:

设计模式课程设计