精华内容
下载资源
问答
  • 场景 例题:学生管理类StudentManager包含...不使用单一职责原则的解法: public class Demo { public void getConnection(String uri) { System.out.println("与"+uri+"建立联系"); } public void searchStudent(S

    场景

    例题:学生管理类StudentManager包含如下功能,包括连接数据库方法getConnection()、操作数据库方法入search和delete、显示学生信息的方法display。

    不使用单一职责原则的解法:

    public class Demo {
        public void getConnection(String uri) {
            System.out.println("与"+uri+"建立联系");
        }
        public void searchStudent(String condition) {
            System.out.println("根据"+condition+"查询学生");
        }
        public void deleteStudent(String condition) {
            System.out.println("根据"+condition+"删除学生");
        }
        public void display() {
            System.out.println("显示学生信息!");
        }
    //学生类有三个职责,连接数据库,查询、删除数据,显示查询结构
    //存在问题
    //1.如果需要修改连接的数据库服务器,需要修改这个类
    //2.如果需要修改查询方式,或者增加插入学生数据,需要修改这个类。
    //有两个引起变化的原因,职责不单一。
    

    单一职责原则概念:
    在这里插入图片描述
    在这里插入图片描述
    使用单一职责原则的解法:

    类图:
    在这里插入图片描述
    代码实现:

    //优点
    //1.DBUtil封装了数据库连接操作,更改数据库服务器仅仅修改这个类或者配置文件
    //2.studentDAO封装了操作数据库的方法,增减插入、更改查询方式等方法比较容易
    //学生管理类,仅仅显示学生信息,职责单一
    public class studentManager {
        private studentDAO dao;
        public studentManager(studentDAO dao) {
            super();
            this.dao = dao;
        }
        public void display() {
            System.out.println("显示学生信息!");
        }
    }
    //数据库操作类,职责单一
    public class studentDAO {
        private DBUtil db;
        public studentDAO(DBUtil db) {
            super();
            this.db = db;
        }
        public void searchStudent(String condition) {
            System.out.println("根据"+condition+"查询学生");
        }
        public void deleteStudent(String condition) {
            System.out.println("根据"+condition+"删除学生");
        }
    }
    //数据库工具类,职责单一
    public class DBUtil {
        public void getConnection(String uri) {
            System.out.println("与"+uri+"建立联系");
        }
    }
    //实例测试类
    public class demo {
        public static void main(String[] args) {
            DBUtil db=new DBUtil();
            studentDAO dao=new studentDAO(db);
            studentManager sm=new studentManager(dao);
            db.getConnection("MYSQL");
            dao.searchStudent("孙悟空");
            sm.display();
        }
    }
    

    运行截图:
    在这里插入图片描述

    展开全文
  • 不使用里氏替换原则的解法: 代码实现: //具体类 class ReadFile { public void read(String fileName){ System.out.println("读取Excel文件"+fileName); } } class ReadDoc extends ReadFile{ //子类覆写父类的...

    场景

    例题:设计文件管理系统,能够读取txt、doc和Excel等文件,采用子类继承父类方式

    不使用里氏替换原则的解法:

    代码实现:

    //具体类
    class ReadFile {
            public void read(String fileName){
                    System.out.println("读取Excel文件"+fileName);
            }
    }
    class ReadDoc extends ReadFile{
    //子类覆写父类的方法
            public void read(String fileName){
                    System.out.println("读取doc文件"+fileName);
            }
    }
    class Demo{
    		public static void readFile(ReadFile a,String fileName){
    			a.read(fileName);
    		} 
            public static void main(String[] args){
                   readFile(new ReadFile(),"a.xsl");
                   readFile(new ReadDoc(),"a.xsl");
             }
    }
    

    里氏替换原则的概念
    所有引用基类的地方必须能透明地使用其子类的对象,即替换成子类之后,系统的行为不会发生改变
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    使用里氏替换原则的解法:
    在这里插入图片描述
    代码实现:

    //父类是接口
    
    public interface Readable{
    
           void read(String fileName);
    
    }
    
    //子类实现了接口Readable
    
    public class ReadDoc implements Readable{
    
           @Override
    
            public void read(String fileName){
    
                   System.out.println("读取doc文件"+fileName);
    
            }
    
    }
    
    public class ReadXsl implements Readable{
    
           @Override
    
            public void read(String fileName){
    
                   System.out.println("读取xsl文件"+fileName);
    
            }
    
    }
    
    //里式替换原则
    
    public class Demo{
    
            public static void readFile(Readable r,String fileName){
    
                    r.read(fileName);
    
            }
    
            public static void main(String[] args){
    
                   Readable r= new ReadDoc();
    
                    readFile(r,"a.doc");//读取doc文件
    
                    ReadXsl rs = new ReadXsl();
    
                    readFile(rs,"b.xsl");//子类透明替换父类(接口)
    
            }
    
    }
    

    运行截图:
    在这里插入图片描述

    展开全文
  • 不使用接口隔离原则的解法: 代码实现: public interface HandleScore { void insert(); void delete(); void search(); void updata(); void print(); } public class Student implements

    场景

    例题:设计学生信息管理系统,有查询成绩search、修改成绩update、增加成绩insert、删除成绩delete、打印成绩print等功能

    不使用接口隔离原则的解法:
    在这里插入图片描述
    代码实现:

    public interface HandleScore {
        void insert();
        void delete();
        void search();
        void updata();
        void print();
    }
    
    public class Student implements HandleScore{
        public static void main(String[] args) {
    
        }
        @Override
        public void insert() {}
        @Override
        public void delete() { }
        @Override
        public void search() {}
        @Override
        public void updata() {}
        @Override
        public void print() {
            System.out.println("输出学生成绩");
        }
    }
    //缺点,存在接口污染
    //因为学生只能查询成绩,不能修改,删除记录
    //HandleScore接口存在Student不需要的方法
    
    //家排污管理人员实现修改查询接口
    public class Academic implements Updatable,Searchable,Printable {
        @Override
        public void print() {}
        @Override
        public void search() {}
        @Override
        public void updata() { }
    }
    

    存在问题:如果学生仅仅能够查询成绩,学生类Student实现这个接口,存在不需要的方法,即接口污染

    接口隔离原则的概念
    在这里插入图片描述
    在这里插入图片描述
    接口隔离原则有四个作用:
    (1)避免接口污染:一个类如果要实现一个接口,那么就要实现这个接口的所有方法,如果这个接口包含这个类不需要的方法,就会造成接口污染,为系统留下隐患
    (2)提高灵活性:一个类可以同时实现多个接口,所以将一个臃肿的接口分割为若干个小接口,通过小接口的不同组合可以满足更多的需求
    (3)提高定制服务:通过细化接口为访问者提高需要的方法
    (4)实现高内聚:高内聚就是接口、类、模块中定义了一组相关的行为。接口是对外界的承诺,承诺越少对系统的开发越有利,变更的风险也就越少,同时也有利于降低成本。通过细化接口实现高内聚。

    使用接口隔离原则的解法:
    在这里插入图片描述
    代码实现:

    //对HandleScore接口进行细化
    //修改接口
    public interface Modifyable{
            void delete();
            void insert();
    }
    
    
    //输出学生成绩接口
    public interface Printable {
        void print();
    }
    
    //查询学生成绩接口
    public interface Searchable {
        void search();
    }
    
    
    public class Student implements Searchable{
    
        @Override
        public void search() {
    
        }
    }
    
    public class Teacher implements Searchable,Updatable,Printable {
        @Override
        public void print() { }
        @Override
        public void search() {}
        @Override
        public void updata() { }
    }
    
    
    public interface Updatable {
        void updata();
    }
    
    展开全文
  • 不使用开闭原则的解法: 在Car类中修改代码 代码实现: //设计类 public class Car { public void start() { System.out.println("启动汽车"); } public void run() { //在run方法中增加导航功能 System.out...

    场景

    例题:设计汽车Car,有start、run和stop方法,现在需要增加导航功能。

    不使用开闭原则的解法:
    在Car类中修改代码
    在这里插入图片描述
    代码实现:

    //设计类
    public class Car {
        public void start() {
            System.out.println("启动汽车");
        }
    
    
        public void run() {
    //在run方法中增加导航功能
            System.out.println("开始导航!!");
            System.out.println("汽车在行驶");
        }
    
    
        public void stop() {
            System.out.println("停车!");
        }
    }
    //实例测试类
    public class Demo {
        public static void main(String[] args) {
            Car gelly=new Car();
            gelly.start();
            gelly.run();
            gelly.stop();
        }
    }
    

    不足之处:
    (1)有些汽车可能没有导航功能
    (2)如果有些方法调用了run方法,可能出现问题

    开闭原则 的概念
    软件实体应当对扩展开放,对修改关闭
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    使用开闭原则的解法:
    新类CarNavigation对Car进行扩展,重写run方法,按照导航行驶
    在这里插入图片描述
    代码实现:

    //设计类
    public class Car {
        public void start() {
            System.out.println("启动汽车");
        }
    
    
        public void run() {
            System.out.println("汽车在行驶");
        }
    
    
        public void stop() {
            System.out.println("停车!");
        }
    }
    //导航类
    public class CarNavigation extends Car{
        private void navigate() {
            System.out.println("开始导航!");
        };
        public void run() {
            this.navigate();
            System.out.println("汽车跟着导航行驶!");
        }
    }
    //实例测试类
    public class Demo {
        public static void main(String[] args) {
            CarNavigation gelly=new CarNavigation();
            gelly.start();
            gelly.run();
            gelly.stop();
    
            System.out.println("-----没有导航的汽车------");
    
            Car qq=new Car();
            qq.start();
            qq.run();
            qq.stop();
        }
    }
    

    运行截图:
    在这里插入图片描述

    展开全文
  • 文章简单介绍了集成电路设计原则及其概念
  • 概念产品推广原则DOC

    2020-12-12 18:06:38
    相信在营销管理你一定需要一款概念产品推广原则DOC学习参考,而概念产品推广原则DOC能够给予你在营销管...该文档为概念产品推广原则DOC,是一份很不错参考资料,具有较高参考价值,感兴趣可以下载看看
  • 1. 设计模式概念   在一定环境中总能用固定套路解决实际问题,这种套路就叫做设计模式。这些套路将问题标准化:对各部分进行抽象、归纳和解耦合。注意,设计模式实现基础是多态。   设计模式可分为3个...
  • 1 软件工程的概念 IEEE对软件工程的定义为: 1)将系统化、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件 2)对1)中所述方法的研究 具体说来,软件工程是以借鉴传统工程的原则、...
  • 事务四个特性(ACID原则) 1、事务原子性(Atomicity)是指一个事务要么全部执行,要么全部不执行,也就是说一个事务不可能只执行了一半就停止了。 2、事务一致性(Consistency)是指事务运行并不改变...
  • 面向对象设计原则和设计模式的概念,讲述面向对象的设计模式
  • 面向对象设计模式基本概念原则,dome例子
  • OO的概念和设计原则

    千次阅读 2015-04-05 18:09:47
    面向对象(OO):就是基于对象概念,以对象为中心,以类和继承为构造机制,充分利用接口和多态提供灵活性,  来认识、理解、刻划客观世界和设计、构建相应软件系统。 面向对象特征:虽然各种面向对象编程语言...
  • 面向对象设计原则:它是设计和编码指导思想,通过设计原则可以提升代码扩展性和灵活性。1、单一职责原则(SRP): 一个类只负责一个功能领域中相应职责,或者可以定义为,就一个类而言,应该只有一个引起它变化...
  • 之前开头的《架构设计原则》一文一直没有把坑填上。而最近在公司内部做了一次架构交流/培训,把架构的概念、架构的形式、架构设计原则都做了阐述,正好算是对此文的完成和补充。PP...
  • 软件设计的概念原则

    千次阅读 热门讨论 2016-11-24 14:03:17
    一、主要内容; 1. 将软件划分成若干独立成分依据。 2. 怎样表示不同成分内得功能细节和数据结构。 3. 怎样统一衡量软件设计技术...软件工程过程每一步都是对软件解法抽象层次一次精化。逐步求精与抽
  • 测试用例概念 原则

    2018-10-25 22:12:55
    测试用例概念 原则 什么是测试用例 测试用例为一组条件或变量,根据其来确定应用软件是否能够正常工作。其条件和变量为测试用例。测试用例属于最小执行实体,只有两种,通过或不通过。 基本原则 测试用例...
  • 数据库-转换原则概念

    2020-06-14 20:28:28
    数据库-转换原则概念规则一:一个实体(矩形)必须要转为一个关系模式规则二:一个多对多菱形必须被抽象成一个关系模式规则三:一个一对多菱形 可以分成两种情况:情况一:可以被抽象成一个关系模式情况二:可以...
  • 结构程序设计的概念最早由E.W.Dijkstra提出。理论上最基本的控制结构只有顺序结构和循环结构两种,选择结构可由顺序和循环组合实现,三种基本的控制结构为顺序、循环、选择。 设计原则·: (1)使用顺序、选择、...
  • 进度控制的概念和一般原则

    千次阅读 2006-07-17 14:38:00
    进度控制的概念和一般原则
  • 字体设计的概念 文字是一个极其庞大的体系,蕴含着人类集体的智慧,而且对人类社会文明起到了见证作用,西方的文明孕育出拉丁字母,东方的文明诞生了中国汉字。 在字体设计中,首先是将字体定位,对收集到的相关资料...
  • 本文详细介绍了Java内存模型的概念、由来,以及happens-before原则的具体规则。
  • 设计模式六大原则 1.开闭原则(Open Close Principle): 开闭原则就是说对扩展开放,对修改关闭,在程序需要进行扩展时候,不能去修改原有代码,实现一个热插拔效果。所以一句话概括就是:为了使程序扩展性好...
  • SOA 基本概念及设计原则浅议 可以了解一下啊
  • 高效SQL执行基本概念及基本原则
  • 设计原则概念总结

    2016-04-14 11:18:06
    单一职责原则(SRP):就一个类而言,应该仅有一个引起它变化原因。  如果一个类承担职责过多,就等于把这些职责耦合在一起,一个职责变化可能会消弱或者抑制这个类完成其他职责能力。这种耦合会导致脆弱...
  • 重构基本概念原则

    千次阅读 2015-08-25 21:30:37
    1,什么是重构?  1. 重构定义  我理解就是一种高效 受控代码整理技术,其最终目的... 名词上定义: 在不改变软件可观察行为j前提下对软件内部结构一种调整,目的是提高程序理解性,可修改性。  
  • 概念利用测试概念进行代码设计时七条基本原则[1]软件测试当设计大型程序时候,您必须时刻留心不同设计选项对诸如性能和可扩展性这样特征影响。随着软件产品日渐复杂及其无所不在部署,软件“可测试性...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,897
精华内容 5,558
关键字:

原则的概念