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

网站建设数据库模板企业网站开发数据库设计

网站建设数据库模板,企业网站开发数据库设计,国内著名平面设计师的个人网站,我为什么不建议年轻人做销售1.装饰者模式 装饰者模式#xff08;Decorator Pattern#xff09;允许向一个现有的对象添加新的功能#xff0c;同时又不改变其结构。这种类型的设计模式属于结构型模式#xff0c;它是作为现有的类的一个包装。 使用场景#xff1a; 在不影响其他对象的情况下#xff… 1.装饰者模式 装饰者模式Decorator Pattern允许向一个现有的对象添加新的功能同时又不改变其结构。这种类型的设计模式属于结构型模式它是作为现有的类的一个包装。 使用场景 在不影响其他对象的情况下以动态、透明的方式给单个对象添加职责。 需要动态地给一个对象增加功能这些功能也可以动态地被撤销。 当不能采用继承的方式对系统进行扩充或者采用继承不利于系统扩展和维护时。 这种模式创建了一个装饰类用来包装原有的类并在保持类方法签名完整性的前提下提供了额外的功能。 示例 interface Coffee {double getCost();String getIngredients(); }class SimpleCoffee implements Coffee {Overridepublic double getCost() {return 1;}Overridepublic String getIngredients() {return Coffee;} }abstract class CoffeeDecorator implements Coffee {private final Coffee decoratedCoffee;public CoffeeDecorator(Coffee coffee) {this.decoratedCoffee coffee;}Overridepublic double getCost() {return decoratedCoffee.getCost();}Overridepublic String getIngredients() {return decoratedCoffee.getIngredients();} }class MilkCoffee extends CoffeeDecorator {public MilkCoffee(Coffee coffee) {super(coffee);}Overridepublic double getCost() {return super.getCost() 0.5;}Overridepublic String getIngredients() {return super.getIngredients() , Milk;} }class WhipCoffee extends CoffeeDecorator {public WhipCoffee(Coffee coffee) {super(coffee);}Overridepublic double getCost() {return super.getCost() 0.7;}Overridepublic String getIngredients() {return super.getIngredients() , Whip;} }public class DecoratorExample {public static void main(String[] args) {Coffee c new SimpleCoffee();System.out.println(Cost : c.getCost() ; Ingredients : c.getIngredients());c new MilkCoffee(c);System.out.println(Cost : c.getCost() ; Ingredients : c.getIngredients());c new WhipCoffee(c);System.out.println(Cost : c.getCost() ; Ingredients : c.getIngredients());} } 该示例演示了一个简单的咖啡饮料店其中定义了一个抽象接口Coffee该接口有两个方法getCost()和getIngredients()。 然后我们定义了一个简单的咖啡饮料SimpleCoffee它实现了Coffee接口并且有默认的价格和成分。 优缺点 优点 装饰者模式可以提供比继承更多的灵活性 可以通过一种动态的方式来扩展一个对象的功能在运行时选择不同的装饰器从而实现不同的行为。 通过使用不同的具体装饰类以及这些装饰类的排列组合可以创造出很多不同行为的组合。可以使用多个具体装饰类来装饰同一对象得到功能更为强大的对象。 具体构件类与具体装饰类可以独立变化用户可以根据需要增加新的具体构件类和具体装饰类在使用时再对其进行组合原有代码无须改变符合“开闭原则”。 缺点 会产生很多的小对象增加了系统的复杂性 这种比继承更加灵活机动的特性也同时意味着装饰模式比继承更加易于出错排错也很困难对于多次装饰的对象调试时寻找错误可能需要逐级排查较为烦琐。 2.策略模式 策略模式Strategy Pattern是一种常见的设计模式它定义了一族算法将每个算法都封装起来让它们之间可以互相替换。策略模式可以使得算法独立于使用它的客户端而独立变化从而可以让客户端在不修改源代码的情况下改变算法的使用方式。 这里是一个使用策略模式实现排序的示例代码。假设有一个Sorter类它可以使用不同的排序算法来对一个整数数组进行排序其中具体使用哪个算法由客户端代码指定。 首先需要定义一个接口SortStrategy表示一个排序算法。这个接口包含一个排序方法sort它接受一个整数数组作为参数并返回排序后的数组 public interface SortStrategy {int[] sort(int[] array); } 接下来可以定义具体的排序算法。这里我们实现了两种排序算法冒泡排序和快速排序。它们都实现了SortStrategy接口 public class BubbleSort implements SortStrategy {public int[] sort(int[] array) {// 冒泡排序算法的具体实现// ...return sortedArray;} }public class QuickSort implements SortStrategy {public int[] sort(int[] array) {// 快速排序算法的具体实现// ...return sortedArray;} } 现在我们可以定义Sorter类了。它包含一个sort方法它接受一个整数数组和一个排序策略作为参数。排序策略是一个实现了SortStrategy接口的类的实例。Sorter类的sort方法使用传入的排序策略来对数组进行排序 public class Sorter {private SortStrategy strategy;public void setStrategy(SortStrategy strategy) {this.strategy strategy;}public int[] sort(int[] array) {return this.strategy.sort(array);} } 最后可以在客户端代码中使用Sorter类来对数组进行排序了。先创建一个整数数组然后创建一个Sorter对象并将排序策略设置为冒泡排序。然后使用Sorter对象的sort方法对数组进行排序并将结果打印出来。接着将排序策略设置为快速排序再次对数组进行排序并将结果打印出来 public static void main(String[] args) {int[] array {5, 2, 4, 6, 1, 3};Sorter sorter new Sorter();sorter.setStrategy(new BubbleSort());int[] sortedArray sorter.sort(array);System.out.println(Arrays.toString(sortedArray)); // 输出 [1, 2, 3, 4, 5, 6]sorter.setStrategy(new QuickSort());sortedArray sorter.sort(array);System.out.println(Arrays.toString(sortedArray)); // 输出 [1, 2, 3, 4, 5, 6] } 策略模式是一种行为型设计模式它可以动态地更改一个类的行为。 在这个代码中我们有两种排序算法BubbleSort 和 QuickSort。 在 Sorter 类中我们使用策略模式以便动态地选择要使用的排序算法。 在主类 Main 中我们创建了一个 Sorter 对象并使用 BubbleSort 算法排序。 然后我们可以通过使用 setSortStrategy() 方法更改要使用的排序算法。 其实策略模式和模板模式很相似但又不相同我们看下一章详述java的设计模式三
http://www.dnsts.com.cn/news/226743.html

相关文章:

  • 华强北 网站建设网页美工设计需要学什么
  • 微信推送用哪个网站做主题网站设计实验步骤
  • 沧州大型企业网站建设免费优化网站建设
  • 哪个网站可以做曝光台关于建设人才网站的竞争对手分析
  • 公司网站建设工作网站模板 响应式
  • 网站备案期间能使用吗山石网站超市
  • 怎么将网站设置为首页wordpress clef
  • 上海seo网站优化_搜索引擎排名_优化型企业网站建设_锦鱼网络wordpress 本地服务器
  • 网站用什么颜色效果图哪里可以制作
  • 餐饮技术支持东莞网站建设郑州经济技术开发区官网
  • 社旗网站设计菏泽网站建设优惠臻动传媒
  • 做网站一个月工资鄂州第一网
  • 低价建站在哪里买网络推广岗位职责和任职要求
  • 重庆百度网站快速排名wordpress 医院模板
  • 北京城乡建设网站首页全国网站建设有实力
  • 有专门做网站维护的职业吗做网站有自己的服务器吗
  • 济南企业网站搭建石家庄优化
  • 网站建设策划优点100个最全的免费网站
  • 给客户做网站需要提供销售策略和营销策略
  • 广东网站建设定制平面设计创意广告
  • 如何制作一个论坛网站高端网站设计合肥网站建设
  • 新开传奇网站韩版wordpress 图片cdn
  • 建建设网站公司襄樊市网站建设公司
  • 枣庄做网站的公司山西建设厅报名网站
  • 莫企业网站建设方案织梦本地网站建设教程
  • wordpress pagelines茂名seo快速排名外包
  • 旅行网站定制公司app程序制作
  • 南京哪家做电商网站阳泉住房和城乡建设厅网站
  • 广东住房和城乡建设局网站深圳福田地图
  • 如何破解网站后台wordpress搬家后403