当前位置: 首页 > news >正文

北京网站建设公司艺唯思青岛企业展厅设计公司

北京网站建设公司艺唯思,青岛企业展厅设计公司,苏州网站建设系统找哪家,免费好用的云电脑在面向对象的设计过程中#xff0c;首先需要考虑的是如何同时提高一个软件系统的可维护性和可复用性。这时#xff0c;遵从面向对象的设计原则#xff0c;可以在进行设计方案时减少错误设计的产生#xff0c;从不同的角度提升一个软件结构的设计水平。 1、单一职责 一个类… 在面向对象的设计过程中首先需要考虑的是如何同时提高一个软件系统的可维护性和可复用性。这时遵从面向对象的设计原则可以在进行设计方案时减少错误设计的产生从不同的角度提升一个软件结构的设计水平。 1、单一职责 一个类尽可能只干一件事情。普通会员、vip会员、黄金会员三个类各干自己的事。 优点低耦合、高内聚。 2、开闭原则 对扩展开放对修改关闭。继承或多态 不建议对原来的代码进行修改可以扩展一个新的类来实现功能。 对程序进行抽象化设计设计出抽象类/接口根据不同的功能来扩展子类。 class CarDemo{public static void main(String[] args) {new CarFactory().carfactory(new Aodi());new CarFactory().carfactory(new DaZhong());} }class CarFactory{void carfactory(Car car){car.createCar();} }abstract class Car{public abstract void createCar(); }class Aodi extends Car{Overridepublic void createCar() {System.out.println(造奥迪汽车);} }class DaZhong extends Car{Overridepublic void createCar() {System.out.println(造大众汽车);} } 3、里氏替换原则 使用父类的地方都可以替换成子类程序不会产生任何错误和异常。 子类继承父类后子类对父类方法进行重写时需要注意本来是要用父类中的方法但是 子类重新修改了功能可能会导致结果不正确。尽量不要重写父类的方法可以新增扩展其他的功能。 package com.ffyc.javapro.ooptenet.tenet3; public class CalculatorDemo{public static void main(String[] args) {System.out.println(new SuperCalculator().sum(5,5,5));} } //计算器 class Calculator {//加法public int add(int a,int b){return ab;}//减法public int sub(int a,int b){return a-b;} } //超级计算器子类 class SuperCalculator extends Calculator{//重写了父类加法Overridepublic int add(int a, int b) {return ab5;}//求和方法 子类新增的功能public int sum(int a,int b,int c){//调用add(),但是子类重写了父类方法,此处调用的子类方法发生了变化int result this.add(a,b);return resultc;} } 4、依赖倒置 如果有多个同类型时需要抽取抽象层(抽象类、接口)。上层定义为抽象或接口底层实现抽象或接口进行扩展功能。 //反例 public class WorkerDemo{public static void main(String[] args) {new Worker().getMessage(new DingDing());new Worker().getMessage(new WeChat());} }class Worker {public void getMessage(DingDing ding){System.out.println(ding.sendMessage());}public void getMessage(WeChat weChat){System.out.println(weChat.sendMessage());} }class DingDing{public String sendMessage(){return 钉钉消息;} }class WeChat{public String sendMessage(){return 微信消息;} } //正例 public class WorkerDemo{public static void main(String[] args) {new Worker().getMessage(new WeChat());} }class Worker {public void getMessage(Message message){System.out.println(message.sendMessage());} }interface Message{public String sendMessage(); }class WeChat implements Message{Overridepublic String sendMessage() {return 微信消息;} } class DingDing implements Message{Overridepublic String sendMessage() {return 钉钉消息;} } 5、接口隔离 接口功能设计时尽量减少一个接口中有过多的功能(方法)可以细分为多个接口。不要把所有的功能定义到同一个接口中不然要实现接口中的所有方法。 6、迪米特原则 也叫最少了解原则在一个类中尽量不要直接使用与此类无关的类只与最好的朋友交谈不与默认人说话。 反例 public class Demeter {public static void main(String[] args) {new SchoolManger().printAllEmployee(new CollegeManger());} } //学校员工类 class SchoolEmployee{private String id;public void setId(String id){this.id id;}public String getId(){return id;} } //学院员工类 class CollegeEmployee{private String id;public void setId(String id){this.id id;}public String getId(){return id;} }//学院员工管理管理类 class CollegeManger{//生成学员所有的员工public ListCollegeEmployee getCollegeEmployee(){ArrayListCollegeEmployee collegeEmployeeArrayList new ArrayList();for (int i 0; i 10 ; i) {CollegeEmployee collegeEmployee new CollegeEmployee();collegeEmployee.setId(学院员工的idi); //添加学院员工collegeEmployeeArrayList.add(collegeEmployee);}return collegeEmployeeArrayList;}} //学校员工管理类 class SchoolManger {//生成学校的员工public ListSchoolEmployee getSchoolEmployee() {ArrayListSchoolEmployee employeeArrayList new ArrayList();for (int i 0; i 5; i) {SchoolEmployee employee new SchoolEmployee();employee.setId(学校的员工id i);employeeArrayList.add(employee);}return employeeArrayList;}//输出学校员工和学院员工信息public void printAllEmployee(CollegeManger collegeManger) {//获取到学校员工ListSchoolEmployee employeeArrayList this.getSchoolEmployee();System.out.println(--------学校员工--------);for (SchoolEmployee employee1 : employeeArrayList) {System.out.println(employee1.getId());}System.out.println(--------学院员工--------);ListCollegeEmployee collegeEmployees collegeManger.getCollegeEmployee();//SchoolManger中出现CollegeEmployee,此类与SchoolManger并非直接朋友,不合理for (CollegeEmployee collegeEmployee : collegeEmployees) {System.out.println(collegeEmployee.getId());}} } 正例 public class Demeter {public static void main(String[] args) {new SchoolManger().printAllEmployee(new CollegeManger());} } //学校员工类 class SchoolEmployee{private String id;public void setId(String id){this.id id;}public String getId(){return id;} } //学院员工类 class CollegeEmployee{private String id;public void setId(String id){this.id id;}public String getId(){return id;} }//学院员工管理管理类 class CollegeManger{//生成学院所有的员工public ListCollegeEmployee getCollegeEmployee(){ArrayListCollegeEmployee collegeEmployeeArrayList new ArrayList();for (int i 0; i 10 ; i) {CollegeEmployee collegeEmployee new CollegeEmployee();collegeEmployee.setId(学院员工的idi); //添加学院员工collegeEmployeeArrayList.add(collegeEmployee);}return collegeEmployeeArrayList;}public void printCollegeEmployee(){ListCollegeEmployee collegeEmployee getCollegeEmployee();for (CollegeEmployee employee : collegeEmployee) {System.out.println(学员员工idemployee.getId());}} } //学校员工管理类 class SchoolManger {//生成学校的员工public ListSchoolEmployee getSchoolEmployee() {ArrayListSchoolEmployee employeeArrayList new ArrayList();for (int i 0; i 5; i) {SchoolEmployee employee new SchoolEmployee();employee.setId(学校的员工id i);employeeArrayList.add(employee);}return employeeArrayList;}//输出学校员工和学院员工信息public void printAllEmployee(CollegeManger collegeManger) {//获取到学校员工ListSchoolEmployee employeeArrayList this.getSchoolEmployee();System.out.println(--------学校员工--------);for (SchoolEmployee employee1 : employeeArrayList) {System.out.println(employee1.getId());}//CollegeManger与SchoolManger是直接朋友,相互之间访问System.out.println(--------学院员工-----------);collegeManger.printCollegeEmployee();} } 7、组合/聚合复用原则 如果想在一个类中达到复用别的类中的方法优先使用关联/依赖其次才考虑继承。 案例现在假设有一个A类里面有两个方法B类想要复用这两个方法请问有几种方案? public class A {public void method01(){}public void method02(){} }class B{A a;//关联关系。A作为B类的成员变量尽量避免使用继承public void setA(A a){this.a a;}public void use(){a.method01();a.method02();} }class Test{public static void main(String[] args) {A a new A();B b new B();b.setA(a);b.use();} } public class A {public void method01(){}public void method02(){} }class B{public void use(A a){//将A作为参数使用依赖关系a.method01();a.method02();} }class Test{public static void main(String[] args) {A a new A();B b new B();b.use(a);} }
http://www.hkea.cn/news/14360287/

相关文章:

  • 编程猫少儿编程网站珠海做网站哪家好
  • 网站开发制作的流程有哪些wordpress本地网站上传
  • 青海响应式网站建设网站搭建服务器
  • 自助建站工具软件邵阳县网站建设公司沙河网站建设公司
  • 百度网站排名查询网站建设教程浩森宇特
  • 杭州网站开发 网站建设wordpress怎么改主页背景
  • 做那种英文网站有流量这2个代码 找做网站的 安装一下
  • 在百度上做个网站多少合适网站设计项目总结
  • 建设银行网站怎么打印明细百度网盘做视频网站
  • 一个小型网站设计黄山公司做网站
  • 专做农产品的网站成都flash互动网站开发
  • 淄博企业网站建设赣州做网站的公司
  • 外贸网站支付接口做网站后台需要什么
  • 建设部网站资质sae wordpress 安装主题
  • 网站数据比较logo免费生成网站
  • 建网站步骤wordpress默认图像不显示
  • 简述制作网站的流程福州建网站 做网页
  • 深圳做网站的网哪个网站可以做教师招聘题目
  • 清晰化网站seo优化教程视频
  • 狠狠做网站哈尔滨的建设信息网站
  • 网站制作详细报价表福田附近网站建设
  • 有啥网站是专做时尚穿搭微信做模板下载网站有哪些
  • 新乡营销型网站建设做视频网站投入要多少
  • 黄冈网站推广软件下载做最最优秀的视频网站有哪些
  • 只做正品的网站海南省海口市网站建设
  • 导购类网站怎么做的烫画图案设计网站
  • 建站平台工具制作公司宣传册
  • 找兼职工作在家做正规网站网络游戏美术设计专业
  • 西宁高端网站制作公司wordpress 砍价插件
  • 成都 网站设计wordpress 两个数据库 互通